System object: phased.BeamscanEstimator
Perform spatial spectrum estimation
Y = step(H,X)
[Y,ANG] = step(H,X)
Starting in R2016b, instead of using the
Y = step(H,X) estimates the spatial spectrum
X using the estimator,
a matrix whose columns correspond to channels.
a column vector representing the magnitude of the estimated spatial
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.
[Y,ANG] = step(H,X) returns additional
ANG as the signal's direction of arrival
(DOA) when the
DOAOutputPort property is
a row vector of the estimated broadside angles (in degrees).
The object performs an initialization the first time the
Estimate the DOA's of two signals received by a 10-element ULA with element spacing of 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 60° in azimuth and -5° in elevation.
Create the signals and 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;60 -5]',fc); noise = 0.1*(randn(size(x)) + 1i*randn(size(x)));
Solve for the DOAs.
estimator = phased.BeamscanEstimator('SensorArray',array, ... 'OperatingFrequency',fc,... 'DOAOutputPort',true,'NumSignals',2); [y,doas] = estimator(x + noise); doas = broadside2az(sort(doas),[20 -5])
doas = 9.5829 60.3813
Plot the beamscan spectrum