Root MUSIC direction of arrival (DOA) estimator for ULA and UCA
RootMUSICEstimator object implements the
root multiple signal classification (root-MUSIC) direction of arrival
estimator for uniform linear arrays (ULA) and uniform circular arrays
(UCA). When a uniform circular array is used, the algorithm transforms
the input to a ULA-like structure using the phase mode
excitation technique .
To estimate the direction of arrival (DOA):
Starting in R2016b, instead of using the
to perform the operation defined by the System
object™, you can
call the object with arguments, as if it were a function. For example,
= step(obj,x) and
y = obj(x) perform
H = phased.RootMUSICEstimator creates a
root MUSIC DOA estimator System
The object estimates the signal's direction of arrival using the root
MUSIC algorithm with a uniform linear array (ULA).
H = phased.RootMUSICEstimator( creates
H, with each specified property Name
set to the specified Value. You can specify additional name-value
pair arguments in any order as (
Sensor array System object
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
The averaging number used by spatial smoothing to estimate the covariance matrix, specified as a strictly positive integer. Each additional smoothing value handles one additional coherent source, but reduces the effective number of elements by one. The maximum value of this property is M-2. For a ULA, M is the number of sensors. For a UCA, M is the size of the internal ULA-like array structure defined by the phase mode excitation technique. The default value of zero indicates that no spatial smoothing is employed.
Source of number of signals
Specify the source of the number of signals as one of
When spatial smoothing is employed on a UCA, you cannot set
Method to estimate number of signals
Specify the method to estimate the number of signals as one
Number of signals
Specify the number of signals as a positive integer scalar.
This property applies when you set the
|step||Perform DOA estimation|
Estimate the DOA's of two signals received by a standard 10-element uniform linear array (ULA) having an element spacing of 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); sULA = phased.ULA('NumElements',10,... 'ElementSpacing',1); sULA.Element.FrequencyRange = [100e6 300e6]; fc = 150e6; x = collectPlaneWave(sULA,[x1 x2],[10 20;45 60]',fc); rng default; noise = 0.1/sqrt(2)*(randn(size(x))+1i*randn(size(x))); sDOA = phased.RootMUSICEstimator('SensorArray',sULA,... 'OperatingFrequency',fc,... 'NumSignalsSource','Property',... 'NumSignals',2); doas = step(sDOA,x + noise); az = broadside2az(sort(doas),[20 60])
az = 10.0001 45.0107
 Van Trees, H. Optimum Array Processing. New York: Wiley-Interscience, 2002.
 Mathews, C.P., Zoltowski, M.D., "Eigenstructure techniques for 2-D angle estimation with uniform circular arrays." IEEE Transactions on Signal Processing, vol. 42, No. 9, pp. 2395-2407, Sept. 1994.
Usage notes and limitations:
See System Objects in MATLAB Code Generation (MATLAB Coder).