System object: phased.BeamspaceESPRITEstimator
Perform DOA estimation
ANG = step(H,X)
Starting in R2016b, instead of using the
ANG = step(H,X) estimates the DOAs from
the DOA estimator
a matrix whose columns correspond to channels.
a row vector of the estimated broadside angles (in degrees).
The size of the first dimension of this input matrix can vary to simulate a changing signal length, such as a pulse waveform with variable pulse repetition frequency.
The object performs an initialization the first time the
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 = 9.9972 45.0061