Direction of arrival using TLS ESPRIT
the directions of arrival,
ang = espritdoa(
ang, of a set of plane
waves received on a uniform line array (ULA). The estimation employs
the TLS ESPRIT, the total least-squares ESPRIT,
algorithm. The input arguments are the estimated spatial covariance
matrix between sensor elements,
R, and the number
of arriving signals,
nsig. In this syntax, sensor
elements are spaced one-half wavelength apart.
Three Signals Arriving at Half-Wavelength-Spaced ULA
Assume a half-wavelength spaced uniform line array with 10 elements. Three plane waves arrive from the 0°, –25°, and 30° azimuth directions. Elevation angles are 0°. The noise is spatially and temporally white. The SNR for each signal is 5 dB. Find the arrival angles.
N = 10; d = 0.5; elementPos = (0:N-1)*d; angles = [0 -25 30]; Nsig = 3; R = sensorcov(elementPos,angles,db2pow(-5)); doa = espritdoa(R,Nsig)
doa = 1×3 30.0000 0.0000 -25.0000
espritdoa function returns the correct angles.
Three Signals Arriving at 0.4-Wavelength-Spaced ULA
Assume a uniform line array with 10 elements. The element spacing is 0.4 wavelength. Three plane waves arrive from the 0°, –25°, and 30° azimuth directions. Elevation angles are 0°. The noise is spatially and temporally white. The SNR for each signal is 5 dB. Find the arrival angles.
N = 10; d = 0.4; elementPos = (0:N-1)*d; angles = [0 -25 30]; Nsig = 3; R = sensorcov(elementPos,angles,db2pow(-5)); doa = espritdoa(R,Nsig,'ElementSpacing',d)
doa = 1×3 -25.0000 -0.0000 30.0000
espritdoa returns the correct angles.
R — Spatial covariance matrix
complex-valued positive-definite N-by-N matrix.
Spatial covariance matrix, specified as a complex-valued, positive-definite, N-by-N matrix.
In this matrix, N represents the number of elements
in the ULA array. If
R is not Hermitian, a Hermitian
matrix is formed by averaging the matrix and its conjugate transpose,
Example: [ 4.3162, –0.2777 – 0.2337i; –0.2777 + 0.2337i , 4.3162]
Complex Number Support: Yes
nsig — Number of arriving signals
Number of arriving signals, specified as a positive integer.
Specify optional pairs of arguments as
the argument name and
Value is the corresponding value.
Name-value arguments must appear after other arguments, but the order of the
pairs does not matter.
Before R2021a, use commas to separate each name and value, and enclose
Name in quotes.
Example: ‘ElementSpacing’, 0.45
ElementSpacing — ULA element spacing
0.5 (default) | real-valued positive scalar
ULA element spacing, specified as a real-valued, positive scalar. Position units are measured in terms of signal wavelength.
RowWeighting — Row weights
1 (default) | real-valued positive scalar
Row weights specified as a real-valued positive scalar. These
weights are applied to the selection matrices which determine the
ESPRIT subarrays. A larger value is generally better but the value
must be less than or equal to (Ns–1)/2,
where Ns is the number of
subarray elements. The number of subarray elements is Ns =
N–1. The value of N is the number
of ULA elements, as specified by the dimensions of the spatial covariance
R. A detailed discussion of selection
matrices and row weighting can be found in Van Trees , p. 1178.
ang — Directions of arrival angles
real-valued 1-by-M row vector
Directions of arrival angle returned as a real-valued, 1-by-M vector.
The dimension M is the number of arriving signals
specified in the argument,
nsig. This angle is
the broadside angle. Angle units are degrees and angle values lie
between –90° and 90°.
 Van Trees, H.L. Optimum Array Processing. New York: Wiley-Interscience, 2002.
C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.
Usage notes and limitations:
Does not support variable-size inputs.
Introduced in R2013a