Можно использовать beamformer, чтобы пространственно фильтровать поступающие сигналы. Акцентирующие или ослабляющие сигналы, которые поступают с определенных направлений, помогают вам различать сигналы интереса и помехи от других направлений.
Можно реализовать узкополосную фазу сдвиговый формирователь луча с помощью phased.PhaseShiftBeamformer
. Когда вы используете этот объект, вы должны задать эти аспекты ситуации, которую вы симулируете:
Массив датчиков
Скорость распространения сигнала
Рабочая частота системы
Направление формирования луча
Для широкополосных beamformers, см. Wideband Beamforming.
В этом примере показано, как создать и сформировать лучом 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')
Чтобы изучить эффект весов формирования луча на характеристику массива, постройте график нормализованной степени матрицы с весами формирования луча и без них.
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')