Узкополосный Формирователь луча Сдвига Фазы Для ULA использует веса выбранный независимый политик любых данных, полученных массивом. Веса в узкополосном формирователе луча сдвига фазы регулируют ответ массивов в заданном направлении. Однако они не составляют интерференционных сценариев. В результате эти обычные формирователи луча восприимчивы к интерференционным сигналам. Такие интерференционные сигналы могут быть конкретной проблемой, если они происходят в боковых лепестках ответа массивов.
В отличие от этого, адаптивные, или статистически оптимальные, формирователи луча могут составлять интерференционные сигналы. Алгоритм adaptive beamformer выбирает веса на основе статистики полученных данных. Например, адаптивный формирователь луча может улучшиться, ОСШ при помощи полученных данных, чтобы поместить аннулирует в ответе массивов. Эти пустые указатели помещаются в углы, соответствующие интерференционным сигналам.
Программное обеспечение Phased Array System Toolbox™ обеспечивает эти адаптивные формирователи луча:
Формирователи луча линейно ограниченного минимального отклонения (LCMV)
Формирователи луча минимального отклонения ответа без искажений (MVDR)
Заморозьте формирователи луча
В этом примере показано, как использовать формирователь луча 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 °.
phased.FrostBeamformer
| phased.LCMVBeamformer
| phased.MVDRBeamformer