Адаптивный Beamforming

Преимущества адаптивного Beamforming

Узкополосный Формирователь луча Сдвига Фазы Для ULA использует веса выбранный независимый политик любых данных, полученных массивом. Веса в узкополосном формирователе луча сдвига фазы регулируют ответ массивов в заданном направлении. Однако они не составляют интерференционных сценариев. В результате эти обычные формирователи луча восприимчивы к интерференционным сигналам. Такие интерференционные сигналы могут быть конкретной проблемой, если они происходят в боковых лепестках ответа массивов.

В отличие от этого, адаптивные, или статистически оптимальные, формирователи луча могут составлять интерференционные сигналы. Алгоритм adaptive beamformer выбирает веса на основе статистики полученных данных. Например, адаптивный формирователь луча может улучшиться, ОСШ при помощи полученных данных, чтобы поместить аннулирует в ответе массивов. Эти пустые указатели помещаются в углы, соответствующие интерференционным сигналам.

Поддержка адаптивного Beamforming

Программное обеспечение Phased Array System Toolbox™ обеспечивает эти адаптивные формирователи луча:

  • Формирователи луча линейно ограниченного минимального отклонения (LCMV)

  • Формирователи луча минимального отклонения ответа без искажений (MVDR)

  • Заморозьте формирователи луча

Обнуление с формирователем луча LCMV

Этот пример показывает, как использовать формирователь луча LCMV, чтобы указать пустой указатель ответа массивов в направлении вмешивающегося источника. Массив является универсальной линейной матрицей (ULA) с 10 элементами. По умолчанию элементы 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)));

Создайте интерференционный источник с помощью Системного объекта phased.BarrageJammer. Задайте заградительный передатчик помех, чтобы иметь эффективную излучаемую мощность 10 Вт. Интерференционный сигнал от заградительного передатчика помех является инцидентом на ULA от угла азимута на 120 ° и повышения на 0 °. Используйте функцию collectPlaneWave Системного объекта ULA, чтобы моделировать прием сигнала передатчика помех.

jammer = phased.BarrageJammer('ERP',10,'SamplesPerFrame',300);
jamsig = jammer();
jammer_angle = [120;0];
jamsig = collectPlaneWave(array,jamsig,jammer_angle,fc);

Добавьте белый Гауссов шум с комплексным знаком, чтобы моделировать шумовые вклады, не непосредственно сопоставленные с создающим затор сигналом. Снова, установите поток случайных чисел по умолчанию для восстанавливаемых результатов. Эта шумовая степень на 0 дБ ниже степени передатчика помех. Beamform сигнал с помощью обычного формирователя луча.

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, как данные тренировки. Выведите сигнал beamformed и веса формирователя луча.

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');

Адаптивная beamform помещает пустой указатель в угле падения интерференционного сигнала, 120 °.

Смотрите также

| |

Похожие темы