В этом примере показано, как использовать непараметрический beamscan метод, чтобы оценить направление прибытия (DOA) сигналов. beamscan алгоритм оценивает DOAs путем сканирования луча массивов по необходимой области. Алгоритм вычисляет выходную мощность для каждого beamscan угла и идентифицирует максимумы как оценки DOA.
Примечание: Этот пример запускается только в R2016b или позже. Если вы используете более ранний релиз, заменяете каждый вызов функции с эквивалентным step
синтаксис. Например, замените myObject(x)
с step(myObject,x)
.
Создайте ULA, состоящий из десяти элементов. Примите, что несущая частота входящих узкополосных источников составляет 1 ГГц.
fc = 1e9; lambda = physconst('LightSpeed')/fc; sULA = phased.ULA('NumElements',10,'ElementSpacing',lambda/2); sULA.Element.FrequencyRange = [8e8 1.2e9];
Примите, что существует wavefield инцидент на ULA, состоящем из двух линейных импульсов 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(sULA,[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 и постройте пространственный спектр.
estimator = phased.BeamscanEstimator('SensorArray',sULA,... 'OperatingFrequency',fc,'ScanAngles',-90:90,... 'DOAOutputPort',true,'NumSignals',2); [y,sigang] = estimator(rxsig); plotSpectrum(estimator)