В этом примере показано, как использовать непараметрический beamscan метод, чтобы оценить направления прибытия (DOA) двух сигналов. beamscan алгоритм оценивает DOAs путем сканирования луча массивов по необходимой области. Алгоритм вычисляет выходную мощность для каждого beamscan угла и идентифицирует максимумы как оценки DOA.
Примечание: Этот пример запускается только в R2016b или позже. Если вы используете более ранний релиз, заменяете каждый вызов функции с эквивалентным step
синтаксис. Например, замените myObject(x)
с step(myObject,x)
.
Создайте универсальную линейную матрицу (ULA), состоящую из десяти изотропных элементов антенны. Несущая частота входящих узкополосных источников составляет 1 ГГц.
fc = 1e9; lambda = physconst('LightSpeed')/fc; antenna = phased.IsotropicAntennaElement('FrequencyRange',[8e8 1.2e9]); array = phased.ULA('Element',antenna,'NumElements',10,'ElementSpacing',lambda/2);
Инцидент wavefield состоит из линейных импульсов FM из двух источников. DOAs этих двух источников являются азимутом на 30 ° и азимутом на 60 °. Оба источника имеют углы вертикального изменения 0 °.
waveform = phased.LinearFMWaveform('SweepBandwidth',1e5,... 'PulseWidth',5e-6,'OutputFormat','Pulses','NumPulses',1); sig1 = waveform(); sig2 = sig1; ang1 = [30; 0]; ang2 = [60;0]; arraysig = collectPlaneWave(array,[sig1 sig2],[ang1 ang2],fc); rng default npower = 0.01; noise = sqrt(npower/2)*... (randn(size(arraysig)) + 1i*randn(size(arraysig))); rxsig = arraysig + noise;
Реализуйте beamscan средство оценки DOA. Отсканируйте углы азимута от к . Выведите оценки DOA и постройте пространственный спектр. Местоположения двух самых больших peaks спектра идентифицируют DOAs сигналов.
estimator = phased.BeamscanEstimator('SensorArray',array,... 'OperatingFrequency',fc,'ScanAngles',-90:90,... 'DOAOutputPort',true,'NumSignals',2); [y,sigang] = estimator(rxsig); disp(sigang)
64 28
Постройте пространственный спектр как функцию поперечного угла.
plotSpectrum(estimator)