Обычный 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')

Похожие темы