Узкополосную Фазу Shift Beamformer Для ULA используют веса, выбранные независимо от любых данных, полученных массивом. Веса в узкополосной фазе сдвиговом формирователе луча управляют ответом массива в заданном направлении. Однако они не учитывают никаких сценариев помех. В результате эти обычные формирователи луча чувствительны к сигналам интерференции. Такие сигналы интерференции могут быть конкретной проблемой, если они возникают на боковых элементах отклика массива.
В отличие от этого, адаптивные или статистически оптимальные формирователи луча могут принимать во внимание сигналы интерференции. Алгоритм adaptive beamformer выбирает веса на основе статистики полученных данных. Для примера адаптивный формирователь луча может улучшить ОСШ путем использования принятых данных для размещения нулей в отклике массива. Эти значения null расположены под углами, соответствующими сигналам помех.
Программное обеспечение Phased Array System Toolbox™ предоставляет следующие адаптивные лучевые форматоры:
Линейно ограниченные лучи с минимальным отклонением (LCMV)
Диаграммы направленности отклонения без искажений (MVDR)
Морозообразователи
В этом примере показано, как использовать LCMV-формирователь луча для указания значения null отклика массива в направлении интерферирующего источника. Массив представляет собой однородный линейный массив с 10 элементами (ULA). По умолчанию элементами ULA являются изотропные антенны, созданные phased.IsotropicAntennaElement
Системные object™. Установите частотную область значений антенных элементов так, чтобы несущая частота находилась в рабочей области значений. Несущая частота составляет 1 ГГц.
fc = 1e9; lambda = physconst('LightSpeed')/fc; array = phased.ULA('NumElements',10,'ElementSpacing',lambda/2); 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
- матрица с десятью столбцами. Каждый столбец представляет принятый сигнал в одном из элементов массива.
Создайте обычный фазосдвигатель луча. Установите WeightsOutputPort
свойство к true
для вывода весов пространственного фильтра.
convbeamformer = phased.PhaseShiftBeamformer('SensorArray',array,... 'OperatingFrequency',1e9,'Direction',angle_of_arrival,... 'WeightsOutputPort',true);
Добавьте к сигналу комплексный белый Гауссов шум x
. Установите поток случайных чисел по умолчанию для воспроизводимых результатов.
rng default
npower = 0.5;
x = x + sqrt(npower/2)*(randn(size(x)) + 1i*randn(size(x)));
Создайте 10W источник взаимодействий. Укажите заслонку заграждения, чтобы иметь эффективную излучаемую степень 10 Вт. Сигнал помехи от заслонки заграждения падает на ULA с угла 120 ° азимута и 0 ° повышения. Используйте collectPlaneWave
функция объекта ULA System для симуляции приема сигнала глушителя.
jamsig = sqrt(10)*randn(300,1); jammer_angle = [120;0]; jamsig = collectPlaneWave(array,jamsig,jammer_angle,fc);
Добавьте комплексный белый Гауссов шум, чтобы симулировать шумовые вклады, не связанные непосредственно с сигналом глушения. Снова установите поток случайных чисел по умолчанию для воспроизводимых результатов. Эта степень на 0 дБ ниже степени глушителя. Формируйте сигнал лучом с помощью обычного устройства формирования луча.
noisePwr = 1e-5;
rng(2008);
noise = sqrt(noisePwr/2)*...
(randn(size(jamsig)) + 1j*randn(size(jamsig)));
jamsig = jamsig + noise;
rxsig = x + jamsig;
[yout,w] = convbeamformer(rxsig);
Реализуйте адаптивный LCMV-формирователь луча с помощью того же массива ULA. Используйте данные без целевых параметров, jamsig
, как обучающие данные. Вывод сигнала формирования луча и весов формирователя луча.
steeringvector = phased.SteeringVector('SensorArray',array,... 'PropagationSpeed',physconst('LightSpeed')); LCMVbeamformer = phased.LCMVBeamformer('DesiredResponse',1,... 'TrainingInputPort',true,'WeightsOutputPort',true); LCMVbeamformer.Constraint = steeringvector(fc,angle_of_arrival); LCMVbeamformer.DesiredResponse = 1; [yLCMV,wLCMV] = LCMVbeamformer(rxsig,jamsig);
Постройте график выхода обычного формирователя луча и выхода адаптивного формирователя луча.
subplot(211) plot(t,abs(yout)) axis tight title('Conventional Beamformer') ylabel('Magnitude') subplot(212) plot(t,abs(yLCMV)) axis tight title('LCMV (Adaptive) Beamformer') xlabel('Seconds') ylabel('Magnitude')
Адаптивный формирователь луча значительно улучшает ОСШ прямоугольного импульса на уровне 0,2 с.
Используя обычные и LCMV веса, постройте график характеристик для каждого формирователя луча.
subplot(211) pattern(array,fc,[-180:180],0,'PropagationSpeed',physconst('LightSpeed'),... 'CoordinateSystem','rectangular','Type','powerdb','Normalize',true,... 'Weights',w) title('Array Response with Conventional Beamforming Weights'); subplot(212) pattern(array,fc,[-180:180],0,'PropagationSpeed',physconst('LightSpeed'),...) 'CoordinateSystem','rectangular','Type','powerdb','Normalize',true,... 'Weights',wLCMV) title('Array Response with LCMV Beamforming Weights');
Адаптивная форма луча помещает ядро в угол прихода сигнала помехи, 120 °.
phased.FrostBeamformer
| phased.LCMVBeamformer
| phased.MVDRBeamformer