Обычный Beamforming

Использование для формирователей луча

Можно использовать формирователь луча, чтобы пространственно отфильтровать прибывающие сигналы. Подчеркивание или ослабление сигналов, которые прибывают от определенных направлений, помогают вам различать сигналы интереса и вмешивающиеся сигналы от других направлений.

Поддержка обычного Beamforming

Можно реализовать узкополосный формирователь луча сдвига фазы с помощью phased.PhaseShiftBeamformer. Когда вы используете этот объект, необходимо задать эти аспекты ситуации, которую вы моделируете:

  • Сенсорная матрица

  • Скорость распространения сигнала

  • Система рабочая частота

  • Направление Beamforming

Для широкополосных формирователей луча смотрите Широкополосный Beamforming.

Узкополосный формирователь луча сдвига фазы для ULA

Этот пример показывает, как создать и 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')

Похожие темы