Main Content

phased.BeamspaceESPRITEstimator

Beamspace ESPRIT direction-of-arrival (DOA) estimator for ULA

Description

The BeamspaceESPRITEstimator object estimates the broadside direction of arrival (DOA) of a signal on a uniform linear array (ULA). The computation uses the Estimation of Signal Parameters via Rotational Invariance Techniques (ESPRIT) algorithm in beamspace.

To estimate the direction of arrival (DOA) of a signal using beamspace ESPRIT:

  1. Create the phased.BeamspaceESPRITEstimator object and set its properties.

  2. Call the object with arguments, as if it were a function.

To learn more about how System objects work, see What Are System Objects?

Creation

Description

estimator = phased.BeamspaceESPRITEstimator creates a beamspace ESPRIT DOA estimator System object™, estimator. The object estimates the signal's direction of arrival at a uniform linear array (ULA) using the beamspace ESPRIT algorithm.

example

estimstor = phased.BeamspaceESPRITEstimator(Name=Value) creates the estimator with each specified property Name set to the specified Value. You can specify additional name-value pair arguments in any order as (Name1=Value1,...,NameN=ValueN).

Properties

expand all

Unless otherwise indicated, properties are nontunable, which means you cannot change their values after calling the object. Objects lock when you call them, and the release function unlocks them.

If a property is tunable, you can change its value at any time.

For more information on changing property values, see System Design in MATLAB Using System Objects.

ULA sensor array, specified as a phased.ULA System object. If you do not specify any name-value pair properties for the ULA sensor array, the default properties of the array are used.

Signal propagation speed, specified as a real-valued positive scalar. Units are in meters per second. The default propagation speed is the value returned by physconst('LightSpeed').

Example: 3e8

Data Types: single | double

Operating frequency, specified as a positive scalar. Units are in Hz.

Example: 1e9

Data Types: single | double

Effective reduction in the size of the sensor array due to spatial smoothing, specified as a nonnegative integer. Amount of averaging used by spatial smoothing to estimate the covariance matrix. specified as a nonnegative integer. Each additional smoothing allows one extra coherent source, but reduces the effective number of element by 1. The maximum value of this property is M–2, where M is the number of sensors.

If the array consists of M elements and the value of this property is L, ML maximally overlapped subarrays of elements are formed. Covariance matrices are estimated for each subarray of M-L elements and averaged together to produce a covariance matrix of size (ML)-by-(ML). The maximum value of L is M–2 resulting in subarrays consisting of two elements. Note that each additional increment in this property (decorrelates) % handles one additional coherent source, but reduces the effective size of the array aperture.

Data Types: double | single

Source of the number of signals, specified as "Auto" or "Property". If you set this property to "Auto", the number of signals is estimated by the method specified by the NumSignalsMethod property.

Example: NumSignalsSource="Property"

Data Types: double | single

Method used to estimate the number of signals. specified as "AIC" or "MDL". "AIC" uses the Akaike Information Criterion and "MDL" uses the Minimum Description Length Criterion.

Dependencies

To enable this property, set the NumSignalsSource property to "Auto".

Data Types: char | string

Number of signals, specified as a positive integer.

Dependencies

To enable this property applies, set the NumSignalsSource property to "Property".

Data Types: double | single

Type of least squares method used for ESPRIT, specified as "TLS" or "LS". "TLS" refers to total least squares and "LS" refers to least squares.

Data Types: char | string

Direction of the center of the beam fan, specified as a scalar value between –90° and 90°. Units are in degrees.

Example: BeamFanCenter=15

Tunable: Yes

Data Types: double | single

Source of the number of beams, specified as "Auto" or "Property". If you set this property to "Auto", the number of beams equals N–L, where N is the number of array elements and L is the value of the SpatialSmoothing property.

Example: NumBeamsSource="Auto"

Data Types: char | string

Number of beams, specified as a positive integer. The lower the number of beams, the greater the reduction in computational cost. This property applies when you set the NumBeamsSource to "Property".

Example: NumBeams=11

Data Types: double | single

Usage

Description

ang = estimator(X) estimates the DOAs amgles ang from beamspace data X.

Note

The object performs an initialization the first time the object is executed. This initialization locks nontunable properties and input specifications, such as dimensions, complexity, and data type of the input data. If you change a nontunable property or an input specification, the System object issues an error. To change nontunable properties or inputs, you must first call the release method to unlock the object.

Input Arguments

expand all

Input data, specified as a complex-valued matrix. Each matrix column corresponds to a different channel.

The size of the first dimension of the input matrix can vary to simulate a changing signal length. A matrix size change can occur, for example, in the case of a pulse waveform with variable pulse repetition frequency.

Data Types: single | double
Complex Number Support: Yes

Output Arguments

expand all

Estimated broadside arrival angles, returned as a real-valued row vector. Units are in degrees.

Object Functions

To use an object function, specify the System object as the first input argument. For example, to release system resources of a System object named obj, use this syntax:

release(obj)

expand all

stepRun System object algorithm
releaseRelease resources and allow changes to System object property values and input characteristics
resetReset internal states of System object

Examples

collapse all

Estimate the directions of arrival (DOA) of two signals received by a standard 10-element ULA with element spacing 1 meter. The antenna operating frequency is 150 MHz. The actual direction of the first signal is 10° in azimuth and 20° in elevation. The direction of the second signal is 45° in azimuth and 60° in elevation.

Create the two signals arriving at the array.

fs = 8000;
t = (0:1/fs:1).';
x1 = cos(2*pi*t*300);
x2 = cos(2*pi*t*400);
array = phased.ULA('NumElements',10,'ElementSpacing',1);
array.Element.FrequencyRange = [100e6 300e6];
fc = 150e6;
x = collectPlaneWave(array,[x1 x2],[10 20;45 60]',fc);
noise = 0.1/sqrt(2)*(randn(size(x)) + 1i*randn(size(x)));

Set up the beamspace ESPRIT estimator and solve for the DOAs.

estimator = phased.BeamspaceESPRITEstimator('SensorArray',array, ...
    'OperatingFrequency',fc,'NumSignalsSource','Property','NumSignals',2);
doas = estimator(x + noise);
az = broadside2az(sort(doas),[20 60])
az = 1×2

    9.9972   45.0061

Algorithms

expand all

References

[1] Van Trees, H. Optimum Array Processing. New York: Wiley-Interscience, 2002.

Extended Capabilities

expand all

Version History

Introduced in R2011a