exponenta event banner

Формирователь луча инверсии матрицы образцов

Когда использовать SMI Beamformer

В ситуациях, когда бортовая радиолокационная система должна подавлять искажения и помехи помех, система нуждается в более сложном алгоритме, чем может обеспечить компенсатор импульсов DPCA. Одним из вариантов является алгоритм инверсии матрицы выборки (SMI). SMI является оптимальным алгоритмом STAP и часто используется в качестве основы для сравнения с другими алгоритмами.

Алгоритм SMI является дорогостоящим в вычислительном отношении и предполагает стационарную среду для множества импульсов. Если вам нужно подавить загромождение и помехи глушителя при меньших вычислениях или в быстро меняющейся среде, попробуйте вместо этого использовать компенсатор импульсов ADPCA.

phased.STAPSMIBeamformer объект реализует алгоритм SMI. В частности, объект позволяет указать:

  • Количество тренировочных ячеек. Алгоритм использует обучающие ячейки для оценки помех. В общем, большее количество тренировочных ячеек приводит к лучшей оценке помех.

  • Количество защитных ячеек, близких к целевым ячейкам. Алгоритм распознает защитные ячейки, чтобы предотвратить загрязнение целевой отдачи оценкой помех.

Формирователь луча инверсии матрицы образцов

Этот сценарий идентичен сценарию, представленному в Adaptive DPCA Pulse Canceller To Reject Clutter and Interference. Можно запустить код для обоих примеров, чтобы сравнить компенсатор импульсов ADPCA с формирователем луча SMI. Подробности примера и код повторяются для удобства.

Для повторения сценария для удобства бортовая радиолокационная платформа представляет собой шестиэлементную ULA, работающую на частоте 4 ГГц. Элементы матрицы разнесены на половину длины волны несущей частоты 4 ГГц. РЛС излучает десять прямоугольных импульсов длительностью два мкс с PRF 5 кГц. Платформа движется вдоль оси массива со скоростью, равной половине произведения шага элемента и PRF. Мишень имеет неплавающий RCS 1 квадратный метр и движется с вектором постоянной скорости (15,15,0). Стационарный широкополосный глушитель заграждения расположен по адресу (3.5e3,1e3,0). Глушитель имеет эффективную излучаемую мощность 1 кВт.

Примечание.Этот пример выполняется только в R2016b или более поздних версиях. При использовании более ранней версии замените каждый вызов функции эквивалентным step синтаксис. Например, заменить myObject(x) с step(myObject,x).

PRF = 5e3;
fc = 4e9;
fs = 1e6;
c = physconst('LightSpeed');
antenna = phased.IsotropicAntennaElement...
    ('FrequencyRange',[8e8 5e9],'BackBaffled',true);
lambda = c/fc;
array = phased.ULA(6,'Element',antenna,'ElementSpacing',lambda/2);
waveform = phased.RectangularWaveform('PulseWidth', 2e-6,...
    'PRF',PRF,'SampleRate',fs,'NumPulses',1);
radiator = phased.Radiator('Sensor',array,...
    'PropagationSpeed',c,...
    'OperatingFrequency',fc);
collector = phased.Collector('Sensor',array,...
    'PropagationSpeed',c,...
    'OperatingFrequency',fc);
vy = (array.ElementSpacing * PRF)/2;
transmitterplatform = phased.Platform('InitialPosition',[0;0;3e3],...
    'Velocity',[0;vy;0]);
% Load simulated constant gamma clutter
load clutterdata
target = phased.RadarTarget('MeanRCS',1,...
    'Model','Nonfluctuating','OperatingFrequency',fc);
targetplatform = phased.Platform('InitialPosition',[5e3; 5e3; 0],...
    'Velocity',[15;15;0]);
% add jammer signal with 200 samples per frame and an ERP of 1000 W.
jamsig = sqrt(1000)*randn(200,1);

jammerplatform = phased.Platform(...
    'InitialPosition',[3.5e3; 1e3; 0],'Velocity',[0;0;0]);
channel = phased.FreeSpace('OperatingFrequency',fc,...
    'TwoWayPropagation',false,'SampleRate',fs);
receiverpreamp = phased.ReceiverPreamp('NoiseFigure',0,...
    'EnableInputPort',true,'SampleRate',fs,'Gain',40);
transmitter = phased.Transmitter('PeakPower',1e4,...
    'InUseOutputPort',true,'Gain',40);

Распространение десяти прямоугольных импульсов к цели и от цели и сбор откликов в массиве. Вычислить загромождение эхо с использованием постоянной гамма-модели с гамма-значением, соответствующим лесистой местности. Также распространить сигнал постановки помех от места постановки помех на бортовую ULA.

NumPulses = 10;
wav = waveform();
M = fs/PRF;
N = array.NumElements;
rxsig = zeros(M,N,NumPulses);
%csig = zeros(M,N,NumPulses);
jsig = zeros(M,N,NumPulses);
fasttime = unigrid(0,1/fs,1/PRF,'[)');
rangebins = (c*fasttime)/2;
clutter.SeedSource = 'Property';
clutter.Seed = 40543;
jammer.SeedSource = 'Property';
jammer.Seed = 96703;
receiverpreamp.SeedSource = 'Property';
receiverpreamp.Seed = 56113;
jamloc = jammerplatform.InitialPosition;

for n = 1:NumPulses
    [txloc,txvel] = transmitterplatform(1/PRF); % move transmitter
    [tgtloc,tgtvel] = targetplatform(1/PRF); % move target
    [~,tgtang] = rangeangle(tgtloc,txloc); % get angle to target
    [txsig,txstatus] = transmitter(wav); % transmit pulse
    %csig(:,:,n) = clutter(txsig(abs(txsig)>0)); % collect clutter

    txsig = radiator(txsig,tgtang); % radiate pulse
    txsig = channel(txsig,txloc,tgtloc,...
       txvel,tgtvel); % propagate pulse to target
    txsig = target(txsig); % reflect off target
    txsig = channel(txsig,tgtloc,txloc,...
       tgtvel,txvel); % propagate to array
    rxsig(:,:,n) = collector(txsig,tgtang); % collect pulse
    
    %jamsig = jammer(); % generate jammer signal
    [~,jamang] = rangeangle(jamloc,txloc); % angle from jammer to transmitter
    jamsig = channel(jamsig,jamloc,txloc,...
       [0;0;0],txvel); % propagate jammer signal
    jsig(:,:,n) = collector(jamsig,jamang); % collect jammer signal
    
    rxsig(:,:,n) = receiverpreamp(...
        rxsig(:,:,n) + csig(:,:,n) + jsig(:,:,n),...
        ~txstatus); % receive pulse plus clutter return plus jammer signal   
end

Определите диапазон цели, затвор дальности и двусторонний доплеровский сдвиг.

sp = radialspeed(tgtloc, targetplatform.Velocity, ...
    txloc, transmitterplatform.Velocity);
tgtdoppler = 2*speed2dop(sp,lambda);
tgtLocation = global2localcoord(tgtloc,'rs',txloc);
tgtazang = tgtLocation(1);
tgtelang = tgtLocation(2);
tgtrng = tgtLocation(3);
tgtcell = val2ind(tgtrng,c/(2 * fs));

Создайте объект формирователя луча SMI. Используйте 100 тренировочных ячеек, по 50 с каждой стороны затвора целевого диапазона. Используйте четыре ячейки защиты, две ячейки диапазона перед целевой ячейкой и две ячейки диапазона за целевой ячейкой. Получение ответа и весов формирователя луча.

tgtang = [tgtazang; tgtelang];
beamformer = phased.STAPSMIBeamformer('SensorArray',array,...
    'PRF',PRF,'PropagationSpeed',c,...
    'OperatingFrequency',fc,...
    'Direction',tgtang,'Doppler',tgtdoppler,...
    'WeightsOutputPort',true,...
    'NumGuardCells',4,'NumTrainingCells',100);
[y,weights] = beamformer(rxsig,tgtcell);

Постройте график выходных данных массива после формирования диаграммы направленности.

plot([tgtrng,tgtrng],[0 5e-6],'-.',rangebins,abs(y))
axis tight
title('SMI Beamformer Output')
xlabel('Range (meters)')
ylabel('Magnitude')

Figure contains an axes. The axes with title SMI Beamformer Output contains 2 objects of type line.

Постройте график углово-доплеровского отклика с весами формирования луча.

response = phased.AngleDopplerResponse('SensorArray',array,...
    'OperatingFrequency',4e9,'PRF',PRF,...
    'PropagationSpeed',physconst('LightSpeed'));
plotResponse(response,weights)
title('Angle-Doppler Response with SMI Beamforming Weights')

Figure contains an axes. The axes with title Angle-Doppler Response with SMI Beamforming Weights contains an object of type image.