Direction of arrival using Root MUSIC
the directions of arrival,
ang = rootmusicdoa(
ang, of a set of plane
waves received on a uniform line array (ULA). The estimation uses
the root MUSIC algorithm. The input arguments
are the estimated spatial covariance matrix between sensor elements,
and the number of arriving signals,
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 Gaussian noise.
Set the SNR for each signal to 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 = rootmusicdoa(R,Nsig)
doa = 1×3 0.0000 30.0000 -25.0000
These angles agree with the known input angles.
Three Signals Arriving at 0.4-Wavelength-Spaced ULA
Assume a uniform line array 10 elements, as in the previous example. But now the element spacing is smaller than one-half wavelength. Three plane waves arrive from the 0°, –25°, and 30° azimuth directions. Elevation angles are 0°. The noise is spatially and temporally white Gaussian noise. The SNR for each signal is 5 dB.
Set element spacing to 0.4 wavelengths using the
ElementSpacing name-value pair. Then, 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 = rootmusicdoa(R,Nsig,'ElementSpacing',d)
doa = 1×3 0.0000 -25.0000 30.0000
The solution agrees with the known 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. The number of signals must be smaller than the number of elements in the ULA array.
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.4
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.
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. 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