ESPRIT direction of arrival (DOA) estimator
The ESPRITEstimator object computes a estimation of signal parameters via rotational invariance (ESPRIT) direction of arrival estimate.
To estimate the direction of arrival (DOA):
H = phased.ESPRITEstimator creates an ESPRIT DOA estimator System object™, H. The object estimates the signal's direction-of-arrival (DOA) using the ESPRIT algorithm with a uniform linear array (ULA).
H = phased.ESPRITEstimator(Name,Value) creates object, H, 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).
Handle to sensor array
Specify the sensor array as a handle. The sensor array must be a phased.ULA object.
Default: phased.ULA with default property values
Signal propagation speed
Specify the propagation speed of the signal, in meters per second, as a positive scalar.
Default: Speed of light
System operating frequency
Specify the operating frequency of the system in hertz as a positive scalar. The default value corresponds to 300 MHz.
Perform forward-backward averaging
Set this property to true to use forward-backward averaging to estimate the covariance matrix for sensor arrays with conjugate symmetric array manifold.
Specify the number of averaging used by spatial smoothing to estimate the covariance matrix as a nonnegative integer. Each additional smoothing handles 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.
Default: 0, indicating no spatial smoothing
Source of number of signals
Specify the source of the number of signals as one of 'Auto' or 'Property'. If you set this property to 'Auto', the number of signals is estimated by the method specified by the NumSignalsMethod property.
Method to estimate number of signals
Specify the method to estimate the number of signals as one of 'AIC' or 'MDL'. The 'AIC' uses the Akaike Information Criterion and the 'MDL' uses Minimum Description Length criterion. This property applies when you set the NumSignalsSource property to 'Auto'.
Number of signals
Specify the number of signals as a positive integer scalar. This property applies when you set the NumSignalsSource property to 'Property'.
Type of least squares method
Specify the least squares method used for ESPRIT as one of 'TLS' or 'LS'. 'TLS' refers to total least squares and 'LS'refers to least squares.
Row weighting factor
Specify the row weighting factor for signal subspace eigenvectors as a positive integer scalar. This property controls the weights applied to the selection matrices. In most cases the higher value the better. However, it can never be greater than (N-1)/2 where N is the number of elements of the array.
|clone||Create ESPRIT DOA estimator object with same property values|
|getNumInputs||Number of expected inputs to step method|
|getNumOutputs||Number of outputs from step method|
|isLocked||Locked status for input attributes and nontunable properties|
|release||Allow property value and input characteristics changes|
|step||Perform DOA estimation|
Estimate the DOAs 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 degrees in azimuth and 20 degrees in elevation. The direction of the second signal is 45 degrees in azimuth and 60 degrees in elevation.
fs = 8000; t = (0:1/fs:1).'; x1 = cos(2*pi*t*300); x2 = cos(2*pi*t*400); ha = phased.ULA('NumElements',10,'ElementSpacing',1); ha.Element.FrequencyRange = [100e6 300e6]; fc = 150e6; x = collectPlaneWave(ha,[x1 x2],[10 20;45 60]',fc); rng default; noise = 0.1/sqrt(2)*(randn(size(x))+1i*randn(size(x))); hdoa = phased.ESPRITEstimator('SensorArray',ha,... 'OperatingFrequency',fc); doas = step(hdoa,x+noise); az = broadside2az(sort(doas),[20 60])