Можно использовать формирователь луча, чтобы пространственно отфильтровать прибывающие сигналы. Подчеркивание или ослабление сигналов, которые прибывают от определенных направлений, помогают вам различать сигналы интереса и вмешивающиеся сигналы от других направлений.
Можно реализовать узкополосный формирователь луча сдвига фазы с помощью phased.PhaseShiftBeamformer
. Когда вы используете этот объект, необходимо задать эти аспекты ситуации, которую вы моделируете:
Сенсорная матрица
Скорость распространения сигнала
Система рабочая частота
Направление Beamforming
Для широкополосных формирователей луча смотрите Широкополосный Beamforming.
Этот пример показывает, как создать и beamform ULA с 10 элементами. Примите, что несущая частота составляет 1 ГГц. Установите интервал элемента массива быть половиной длины волны поставщика услуг.
Примечание: Этот пример запускается только в R2016b или позже. Если вы используете более ранний релиз, заменяете каждый вызов функции с эквивалентным синтаксисом step
. Например, замените myObject(x)
на step(myObject,x)
.
fc = 1e9; lambda = physconst('LightSpeed')/fc; array = phased.ULA('NumElements',10,'ElementSpacing',lambda/2);
По умолчанию элементы ULA являются изотропными антеннами, созданными Системой phased.IsotropicAntennaElement
object™. Установите частотный диапазон элементов антенны так, чтобы несущая частота нашлась в рабочем диапазоне.
array.Element.FrequencyRange = [8e8 1.2e9];
Моделируйте тестовый сигнал. В данном примере используйте простой меандр.
t = linspace(0,0.3,300)'; testsig = zeros(size(t)); testsig(201:205) = 1;
Примите, что меандр является инцидентом на ULA от угла азимута на 30 ° и повышения на 0 °. Используйте функцию collectPlaneWave
Системного объекта ULA, чтобы моделировать прием импульсной формы волны от заданного угла.
angle_of_arrival = [30;0]; x = collectPlaneWave(array,testsig,angle_of_arrival,fc);
x
сигнала является матрицей с десятью столбцами. Каждый столбец представляет полученный сигнал в одном из элементов массива.
Добавьте Гауссов шум с комплексным знаком в x
сигнала. Сбросьте поток случайных чисел по умолчанию для восстанавливаемых результатов. Постройте значения полученных импульсов в первых четырех элементах ULA.
rng default npower = 0.5; x = x + sqrt(npower/2)*(randn(size(x)) + 1i*randn(size(x))); subplot(221) plot(t,abs(x(:,1))) title('Element 1 (magnitude)') axis tight ylabel('Magnitude') subplot(222) plot(t,abs(x(:,2))) title('Element 2 (magnitude)') axis tight ylabel('Magnitude') subplot(223) plot(t,abs(x(:,3))) title('Element 3 (magnitude)') axis tight xlabel('Seconds') ylabel('Magnitude') subplot(224) plot(t,abs(x(:,4))) title('Element 4 (magnitude)') axis tight xlabel('Seconds') ylabel('Magnitude')
Создайте формирователь луча сдвига фазы. Установите свойство WeightsOutputPort
на true
выводить пространственные веса фильтра, которые указывают формирователь луча на угол прибытия.
beamformer = phased.PhaseShiftBeamformer('SensorArray',array,... 'OperatingFrequency',1e9,'Direction',angle_of_arrival,... 'WeightsOutputPort',true);
Выполнитесь фаза переключают формирователь луча, чтобы вычислить формирователь луча вывод и вычислить прикладные веса.
[y,w] = beamformer(x);
Постройте значение выходной формы волны наряду с бесшумной исходной формой волны для сравнения.
subplot(211) plot(t,abs(testsig)) axis tight title('Original Signal') ylabel('Magnitude') subplot(212) plot(t,abs(y)) axis tight title('Received Signal with Beamforming') ylabel('Magnitude') xlabel('Seconds')
Чтобы исследовать эффект beamforming весов на ответе массивов, постройте нормированный ответ степени массива с и без beamforming весов.
azang = -180:30:180; subplot(211) pattern(array,fc,[-180:180],0,'CoordinateSystem','rectangular',... 'Type','powerdb','PropagationSpeed',physconst('LightSpeed')) set(gca,'xtick',azang); title('Array Response without Beamforming Weights') subplot(212) pattern(array,fc,[-180:180],0,'CoordinateSystem','rectangular',... 'Type','powerdb','PropagationSpeed',physconst('LightSpeed'),... 'Weights',w) set(gca,'xtick',azang); title('Array Response with Beamforming Weights')