Рассмотрим бортовую радиолокационную систему, которая должна подавлять захламление и, возможно, помехи помех. При любом из следующих условий можно выбрать адаптивный компенсатор импульсов DPCA (ADPCA) для подавления этих эффектов.
Помехи и другие интерференционные эффекты являются существенными. Компенсатор импульсов DPCA подвержен помехам, поскольку компенсатор импульсов DPCA не использует принятые данные.
Алгоритм инверсии матрицы выборки (SMI) неприменим из-за вычислительных затрат или быстро меняющейся среды.
phased.ADPCAPulseCanceller объект реализует компенсатор импульсов ADPCA. Этот компенсатор импульсов использует данные, принятые от двух последовательных импульсов, для оценки ковариационной матрицы пространственно-временных помех. В частности, объект позволяет указать:
Количество тренировочных ячеек. Алгоритм использует обучающие ячейки для оценки помех. В общем, большее количество тренировочных ячеек приводит к лучшей оценке помех.
Количество защитных ячеек, близких к целевым ячейкам. Алгоритм распознает защитные ячейки, чтобы предотвратить загрязнение целевой отдачи оценкой помех.
В этом примере реализован адаптивный компенсатор импульсов DPCA для подавления беспорядков и помех. Сценарий идентичен сценарию в DPCA Pulse Canceller to Reject Clutter, за исключением того, что в месте (3.5e3,1e3,0) добавляется шум, эквивалентный стационарному широкополосному глушителю заграждения. Глушитель имеет эффективную излучаемую мощность 1 кВт.
Для повторения сценария для удобства бортовая радиолокационная платформа представляет собой шестиэлементную ULA, работающую на частоте 4 ГГц. Элементы матрицы разнесены на половину длины волны несущей частоты 4 ГГц. Радар излучает десять прямоугольных импульсов длительностью два мкс с PRF 5 кГц. Платформа движется вдоль оси массива со скоростью, равной половине произведения шага элемента и PRF. Подавление импульсов ADPCA применимо, поскольку d/2, где
- скорость платформы;
представляет интервал повторения импульсов
- межэлементный интервал массива;
Мишень имеет неплавающий RCS 1 квадратный метр и движется с вектором постоянной скорости (15,15,0).
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); receiver = 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; receiver.SeedSource = 'Property'; receiver.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 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 [~,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) = receiver(... 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));
Обработка откликов массива с помощью неадаптивного компенсатора импульсов DPCA. Для этого создайте объект DPCA и примените его к принятым сигналам.
canceller = phased.DPCACanceller('SensorArray',array,'PRF',PRF,... 'PropagationSpeed',c,... 'OperatingFrequency',fc,... 'Direction',[0;0],'Doppler',tgtdoppler,... 'WeightsOutputPort',true); [y,w] = canceller(rxsig,tgtcell);
Постройте график результата DPCA с целевым диапазоном, отмеченным вертикальной пунктирной линией. Обратите внимание, что наличие интерференционного сигнала скрывает цель.
plot([tgtrng/1e3,tgtrng/1e3],[0 7e-2],'-.',rangebins/1e3,abs(y)) axis tight xlabel('Range (km)') ylabel('Magnitude') title('DPCA Canceller Output with Jamming')

Примените адаптивный компенсатор импульсов DPCA. Используйте 100 тренировочных ячеек и 4 защитные ячейки, по две на каждой стороне затвора целевого диапазона.
canceller = phased.ADPCACanceller('SensorArray',array,'PRF',PRF,... 'PropagationSpeed',c,... 'OperatingFrequency',fc,... 'Direction',[0;0],'Doppler',tgtdoppler,... 'WeightsOutputPort',true,'NumGuardCells',4,... 'NumTrainingCells',100); [y_adpca,w_adpca] = canceller(rxsig,tgtcell);
Постройте график с целевым диапазоном, отмеченным вертикальной пунктирной линией. Обратите внимание на то, как адаптивный компенсатор импульсов DPCA позволяет обнаруживать цель при наличии помехового сигнала.
plot([tgtrng/1e3,tgtrng/1e3],[0 4e-7],'-.',rangebins/1e3,abs(y_adpca)) axis tight title('ADPCA Canceller Output with Jamming') xlabel('Range (km)') ylabel('Magnitude')

Осмотрите углово-доплеровскую реакцию. Обратите внимание на наличие гребня загромождения в плоскости угла-доплера и нулевого значения в широком угле глушителя для всех частот доплера.
angdopplerersponse = phased.AngleDopplerResponse('SensorArray',array,... 'OperatingFrequency',fc,... 'PropagationSpeed',c,... 'PRF',PRF,'ElevationAngle',tgtelang); plotResponse(angdopplerersponse,w_adpca) title('Angle-Doppler Response with ADPCA Pulse Cancellation') text(az2broadside(jamang(1),jamang(2)) + 10,... 0,'\leftarrow Interference Null')
