В этом примере дается краткое введение в методы пространственно-временной адаптивной обработки (STAP) и показано, как использовать Toolbox™ системы фазированной решетки для применения алгоритмов STAP к принятым импульсам. STAP - методика, используемая в бортовых радиолокационных системах для подавления помех от беспорядков и помех от помех.
В системе наземного указателя движущейся цели (GMTI) бортовая РЛС собирает возвращенный эхо от движущейся цели на земле. Однако принятый сигнал содержит не только отраженный эхо от цели, но и возвраты от освещенной поверхности земли. Отдача от земли обычно называется нагромождением.
Загромождение происходит из всех областей, освещаемых лучом радара, поэтому он занимает все ячейки диапазона и все направления. Полная обратная помеха часто намного сильнее, чем эхо возвращенного сигнала, что создает большую проблему для обнаружения цели. Таким образом, фильтрация беспорядков является критической частью системы GMTI.
В традиционных системах MTI фильтрация беспорядков часто использует то, что земля не движется. Таким образом, нагромождение занимает нулевой доплеровский элемент в доплеровском спектре. Этот принцип приводит ко многим методам фильтрации беспорядков на основе Доплера, таким как подавитель импульсов. Для получения подробного примера компенсатора импульсов интересующиеся читатели могут обратиться к разделу «Уменьшение загроможденности земли с помощью радиолокатора индикации движущейся цели (MTI)» (Radar Toolbox). Когда сама радиолокационная платформа также движется, например, в плоскости, доплеровская составляющая от возврата земли больше не равна нулю. Кроме того, доплеровские компоненты загромождений зависят от угла. В этом случае отдача от беспорядка, вероятно, будет иметь энергию в доплеровском спектре. Следовательно, беспорядок не может быть отфильтрован только относительно доплеровской частоты.
Помехи являются еще одним значительным источником помех, который часто присутствует в принятом сигнале. Простейшей формой заклинивания является глушитель заграждения, который является сильным, непрерывным белым шумом, направленным в сторону радарного приемника, так что приемник не может легко обнаружить возврат цели. Глушитель обычно находится в определенном месте, и поэтому сигнал помех связан с определенным направлением. Однако из-за белого шума помехи принимаемый сигнал помехи занимает весь доплеровский диапазон.
Методики STAP фильтруют сигнал как в угловой, так и в доплеровской областях (таким образом, название «пространственно-временная адаптивная обработка») для подавления загромождения и заклинивания. В следующих разделах мы моделируем возврат от цели, беспорядка и помехи и иллюстрируем, как методы STAP фильтруют помехи от принятого сигнала.
Сначала мы определим радиолокационную систему, начиная с системы, построенной в примере Имитация тестовых сигналов для радарного приемника.
load BasicMonostaticRadarExampleData.mat; % Load monostatic pulse radar
Определение антенны
Предположим, что антенный элемент имеет изотропный отклик в передней полусфере и все нули в задней полусфере. Диапазон рабочих частот устанавливается от 8 до 12 ГГц для соответствия рабочей частоте системы 10 ГГц.
antenna = phased.IsotropicAntennaElement... ('FrequencyRange',[8e9 12e9],'BackBaffled',true); % Baffled Isotropic
Определите 6-элементную ULA с пользовательским образцом элемента. Расстояние между элементами принимается равным половине длины волны сигнала.
fc = radiator.OperatingFrequency; c = radiator.PropagationSpeed; lambda = c/fc; ula = phased.ULA('Element',antenna,'NumElements',6,... 'ElementSpacing', lambda/2); pattern(ula,fc,'PropagationSpeed',c,'Type','powerdb') title('6-element Baffled ULA Response Pattern') view(60,50)

Настройка радара
Затем установите антенную решетку на излучателе/коллекторе. Затем определите радиолокационное движение. Радиолокационная система установлена на самолёте, который пролетает 1000 метров над землёй. Плоскость летит вдоль оси матрицы ULA со скоростью, такой, что в течение одного интервала импульсов она проходит расстояние между полуэлементами матрицы. (Объяснение такой установки приведено в следующем разделе методики DPCA.)
radiator.Sensor = ula; collector.Sensor = ula; sensormotion = phased.Platform('InitialPosition',[0; 0; 1000]); arrayAxis = [0; 1; 0]; prf = waveform.PRF; vr = ula.ElementSpacing*prf; % in [m/s] sensormotion.Velocity = vr/2*arrayAxis;
Цель
Далее определите нефлюктуируемую цель с сечением радара 1 квадратный метр, движущуюся по земле.
target = phased.RadarTarget('Model','Nonfluctuating','MeanRCS',1, ... 'OperatingFrequency', fc); tgtmotion = phased.Platform('InitialPosition',[1000; 1000; 0],... 'Velocity',[30; 30; 0]);
Глушитель
Цель возвращает требуемый сигнал; однако в принятом сигнале также присутствует несколько помех. Если панель инструментов радара доступна, установите переменную hasRadarToolbox истинно определить простой заградительный глушитель с эффективной мощностью излучения 100 Вт. В противном случае симуляция будет использовать сохраненный сигнал помехи.
hasRadarToolbox = false; Fs = waveform.SampleRate; rngbin = c/2*(0:1/Fs:1/prf-1/Fs).'; if hasRadarToolbox jammer = barrageJammer('ERP',100); jammer.SamplesPerFrame = numel(rngbin); jammermotion = phased.Platform('InitialPosition',[1000; 1732; 1000]); end
Беспорядок
В этом примере мы моделируем беспорядок с использованием постоянной гамма-модели с гамма-значением -15 дБ. Литература показывает, что такое значение гамма может быть использовано для моделирования местности, покрытой лесом. Для каждого диапазона возврат беспорядка может рассматриваться как комбинация возвратов от множества небольших участков беспорядка на этом кольце диапазона. Так как антенна обратно загромождена, вклад нагромождения только спереди. Для упрощения вычислений используйте азимутальную ширину 10 градусов для каждого сегмента. Опять же, если Radar Toolbox недоступен, при моделировании будет использоваться сохраненный сигнал загромождения.
if hasRadarToolbox mountingAng = [30,0,0]; Rmax = 5000; Azcov = 120; clutter = constantGammaClutter('Sensor',ula,'SampleRate',Fs,... 'Gamma',-15,'PlatformHeight',1000,... 'OperatingFrequency',fc,... 'PropagationSpeed',c,... 'PRF',prf,... 'TransmitERP',transmitter.PeakPower*db2pow(transmitter.Gain),... 'PlatformSpeed',norm(sensormotion.Velocity),... 'PlatformDirection',[90;0],... 'MountingAngles',mountingAng,'ClutterAzimuthCenter', ... 'ClutterMaxRange', Rmax,... 'ClutterAzimuthSpan',Azcov,... 'PatchAzimuthSpan',10,... 'OutputFormat','Pulses'); end
Пути распространения
Наконец, создайте среду свободного пространства для представления путей цели и помех. Поскольку мы используем моностатическую радиолокационную систему, целевой канал настроен на имитацию двухсторонних задержек распространения. Тракт постановщика помех вычисляет только односторонние задержки распространения.
tgtchannel = phased.FreeSpace('TwoWayPropagation',true,'SampleRate',Fs,... 'OperatingFrequency', fc); jammerchannel = phased.FreeSpace('TwoWayPropagation',false,... 'SampleRate',Fs,'OperatingFrequency', fc);
Теперь мы готовы смоделировать возврат. Соберите 10 импульсов перед обработкой. Начальное число генератора случайных чисел из модели помехи устанавливается на константу для получения воспроизводимых результатов.
numpulse = 10; % Number of pulses tsig = zeros(size(rngbin,1), ula.NumElements, numpulse); jsig = tsig; tjcsig = tsig; tcsig = tsig; csig = tsig; if hasRadarToolbox jammer.SeedSource = 'Property'; jammer.Seed = 5; clutter.SeedSource = 'Property'; clutter.Seed = 5; else load STAPIntroExampleData; end for m = 1:numpulse % Update sensor, target and calculate target angle as seen by the sensor [sensorpos,sensorvel] = sensormotion(1/prf); [tgtpos,tgtvel] = tgtmotion(1/prf); [~,tgtang] = rangeangle(tgtpos,sensorpos); % Update jammer and calculate the jammer angles as seen by the sensor if hasRadarToolbox [jampos,jamvel] = jammermotion(1/prf); [~,jamang] = rangeangle(jampos,sensorpos); end % Simulate propagation of pulse in direction of targets pulse = waveform(); [pulse,txstatus] = transmitter(pulse); pulse = radiator(pulse,tgtang); pulse = tgtchannel(pulse,sensorpos,tgtpos,sensorvel,tgtvel); % Collect target returns at sensor pulse = target(pulse); tsig(:,:,m) = collector(pulse,tgtang); % Collect jammer and clutter signal at sensor if hasRadarToolbox jamsig = jammer(); jamsig = jammerchannel(jamsig,jampos,sensorpos,jamvel,sensorvel); jsig(:,:,m) = collector(jamsig,jamang); csig(:,:,m) = clutter(); end % Receive collected signals tjcsig(:,:,m) = receiver(tsig(:,:,m)+jsig(:,:,m)+csig(:,:,m),... ~(txstatus>0)); % Target + jammer + clutter tcsig(:,:,m) = receiver(tsig(:,:,m)+csig(:,:,m),... ~(txstatus>0)); % Target + clutter tsig(:,:,m) = receiver(tsig(:,:,m),... ~(txstatus>0)); % Target echo only end
Истинный целевой диапазон, угол и доплеровский
Целевой угол азимута составляет 45 градусов, а угол места - около -35,27 градусов.
tgtLocation = global2localcoord(tgtpos,'rs',sensorpos);
tgtAzAngle = tgtLocation(1)tgtAzAngle = 44.9981
tgtElAngle = tgtLocation(2)
tgtElAngle = -35.2651
Дальность цели - 1732 м.
tgtRng = tgtLocation(3)
tgtRng = 1.7320e+03
Целевая доплеровская нормированная частота составляет около 0,21.
sp = radialspeed(tgtpos, tgtmotion.Velocity, ... sensorpos, sensormotion.Velocity); tgtDp = 2*speed2dop(sp,lambda); % Round trip Doppler tgtDp/prf
ans = 0.2116
Суммарный принятый сигнал содержит возврат от цели, загромождение и помехи вместе взятые. Сигнал представляет собой куб данных с тремя измерениями (диапазон бинов x количество элементов x количество импульсов). Обратите внимание, что возврат загромождения доминирует над общим возвратом и маскирует целевой возврат. Мы не можем обнаружить цель (синяя вертикальная линия) без дальнейшей обработки на данном этапе.
ReceivePulse = tjcsig; plot([tgtRng tgtRng],[0 0.01],rngbin,abs(ReceivePulse(:,:,1))); xlabel('Range (m)'), ylabel('Magnitude'); title('Signals collected by the ULA within the first pulse interval')

Теперь изучите результаты в области доплеровского (или пространственно-временного) 2-D угла. В общем, отклик генерируется сканированием всех диапазонов и азимутальных углов для данного угла возвышения. Поскольку мы точно знаем, где находится цель, мы можем вычислить её дальность и угол возвышения относительно антенной решетки.
tgtCellIdx = val2ind(tgtRng,c/(2*Fs)); snapshot = shiftdim(ReceivePulse(tgtCellIdx,:,:)); % Remove singleton dim angdopresp = phased.AngleDopplerResponse('SensorArray',ula,... 'OperatingFrequency',fc, 'PropagationSpeed',c,... 'PRF',prf, 'ElevationAngle',tgtElAngle); plotResponse(angdopresp,snapshot,'NormalizeDoppler',true); text(tgtAzAngle,tgtDp/prf,'+ Target')

Если мы посмотрим на угловой доплеровский отклик, в котором преобладает загромождение, мы увидим, что загромождение занимает не только нулевой доплеровский отклик, но и другие доплеровские бункеры. Доплеровское значение возврата нагромождения также является функцией угла. Загромождение выглядит как диагональная линия во всем угловом доплеровском пространстве. Такую линию часто называют гребнем захламления. Принятый сигнал помехи представляет собой белый шум, который распространяется по всему доплеровскому спектру под определенным углом, около 60 градусов.
Алгоритм смещенной фазовой центральной антенны (DPCA) часто считается первым алгоритмом STAP. Этот алгоритм использует сдвинутую апертуру для компенсации движения платформы таким образом, чтобы обратное движение мешалки не изменялось от импульса к импульсу. Таким образом, этот алгоритм может удалить нагромождение посредством простого вычитания двух последовательных импульсов.
Компенсатор DPCA часто используется в ULA, но требует специальных условий движения платформы. Платформа должна перемещаться вдоль оси антенной решетки и со скоростью, такой, чтобы в течение одного интервала импульсов платформа перемещалась ровно на половину расстояния между элементами. Система, используемая здесь, настроена, как описано в предыдущих разделах, для выполнения этих условий.
Предположим, что N - количество элементов ULA. Обратное замыкание, принимаемое антенной 1 через антенну N-1 во время первого импульса, является таким же, как обратное замыкание, принимаемое антенной 2 через антенну N во время второго импульса. Путем вычитания импульсов, принятых в этих двух субчипах в течение двух интервалов импульсов, может быть устранено загромождение. Стоимость этого метода - апертура, которая на один элемент меньше исходной матрицы.
Теперь определите средство отмены DPCA. Алгоритм может нуждаться в поиске по всем комбинациям угла и Доплера, чтобы найти цель, но, например, поскольку мы точно знаем, где находится цель, мы можем направить наш процессор в эту точку.
rxmainlobedir = [0; 0]; stapdpca = phased.DPCACanceller('SensorArray',ula,'PRF',prf,... 'PropagationSpeed',c,'OperatingFrequency',fc,... 'Direction',rxmainlobedir,'Doppler',tgtDp,... 'WeightsOutputPort',true)
stapdpca =
phased.DPCACanceller with properties:
SensorArray: [1x1 phased.ULA]
PropagationSpeed: 299792458
OperatingFrequency: 1.0000e+10
PRFSource: 'Property'
PRF: 2.9979e+04
DirectionSource: 'Property'
Direction: [2x1 double]
NumPhaseShifterBits: 0
DopplerSource: 'Property'
Doppler: 6.3429e+03
WeightsOutputPort: true
PreDopplerOutput: false
Сначала примените средство отмены DPCA как к целевому возврату, так и к возврату беспорядка.
ReceivePulse = tcsig; [y,w] = stapdpca(ReceivePulse,tgtCellIdx);
Обработанные данные объединяют всю информацию в пространстве и по импульсам, чтобы стать одним импульсом. Затем проверьте обработанный сигнал во временной области.
plot([tgtRng tgtRng],[0 1.2e-5],rngbin,abs(y)); xlabel('Range (m)'), ylabel('Magnitude'); title('DPCA Canceller Output (no Jammer)')

Сигнал теперь четко отличим от шума, и загромождение отфильтровано. По угловому доплеровскому отклику весов процессора DPCA, приведенному ниже, можно также видеть, что весы создают глубокое нулевое значение вдоль гребня загромождения.
angdopresp.ElevationAngle = 0; plotResponse(angdopresp,w,'NormalizeDoppler',true); title('DPCA Weights Angle Doppler Response at 0 degrees Elevation')

Хотя результаты, полученные DPCA, очень хорошие, радиолокационная платформа должна удовлетворять очень строгим требованиям в своем движении для использования этой техники. Кроме того, технология DPCA не может подавлять помехи помех.
Применение обработки DPCA к общему сигналу дает результат, показанный на следующем рисунке. Мы видим, что DPCA не может фильтровать помеху от сигнала. Результирующий угловой доплеровский рисунок весов тот же, что и ранее. Таким образом, процессор не может адаптироваться к вновь добавленным помехам помех.
ReceivePulse = tjcsig; [y,w] = stapdpca(ReceivePulse,tgtCellIdx); plot([tgtRng tgtRng],[0 8e-4],rngbin,abs(y)); xlabel('Range (m)'), ylabel('Magnitude'); title('DPCA Canceller Output (with Jammer)')

plotResponse(angdopresp,w,'NormalizeDoppler',true); title('DPCA Weights Angle Doppler Response at 0 degrees Elevation')

Чтобы подавить беспорядок и помеху одновременно, нам нужен более сложный алгоритм. Оптимальные веса приемника, когда помеха распределена по Гауссу, задаются [1]
kR-1s
где k - скалярный коэффициент, R - пространственно-временная ковариационная матрица помехового сигнала, а s - требуемый вектор пространственно-временного управления. Точная информация R часто недоступна, поэтому мы будем использовать алгоритм инверсии матрицы выборки (SMI). Алгоритм оценивает R из образцов обучающих клеток и затем использует его в вышеупомянутом уравнении.
Теперь определите формирователь луча SMI и примените его к сигналу. В дополнение к информации, необходимой в DPCA, формирователю луча SMI необходимо знать количество защитных ячеек и количество обучающих ячеек. Алгоритм использует выборки в обучающих ячейках для оценки помех. Таким образом, мы не должны использовать ячейки, которые близки к целевой ячейке, для оценок, потому что они могут содержать некоторую целевую информацию, то есть мы должны определить защитные ячейки. Количество защитных ячеек должно быть четным числом, чтобы разделяться одинаково перед и позади целевой ячейки. Число тренировочных ячеек также должно быть четным и равномерно распределяться перед и за мишенью. Обычно, чем больше количество обучающих ячеек, тем лучше оценка помех.
tgtAngle = [tgtAzAngle; tgtElAngle]; stapsmi = phased.STAPSMIBeamformer('SensorArray', ula, 'PRF', prf, ... 'PropagationSpeed', c, 'OperatingFrequency', fc, ... 'Direction', tgtAngle, 'Doppler', tgtDp, ... 'WeightsOutputPort', true,... 'NumGuardCells', 4, 'NumTrainingCells', 100)
stapsmi =
phased.STAPSMIBeamformer with properties:
SensorArray: [1x1 phased.ULA]
PropagationSpeed: 299792458
OperatingFrequency: 1.0000e+10
PRFSource: 'Property'
PRF: 2.9979e+04
DirectionSource: 'Property'
Direction: [2x1 double]
NumPhaseShifterBits: 0
DopplerSource: 'Property'
Doppler: 6.3429e+03
NumGuardCells: 4
NumTrainingCells: 100
WeightsOutputPort: true
[y,w] = stapsmi(ReceivePulse,tgtCellIdx); plot([tgtRng tgtRng],[0 2e-6],rngbin,abs(y)); xlabel('Range (m)'), ylabel('Magnitude'); title('SMI Beamformer Output (with Jammer)')

plotResponse(angdopresp,w,'NormalizeDoppler',true); title('SMI Weights Angle Doppler Response at 0 degrees Elevation')

Результат показывает, что SMI формирователь луча может различать сигналы как от беспорядка, так и от помехи. Угловая доплеровская схема весов SMI показывает глубокое нулевое значение вдоль направления постановщика помех.
SMI обеспечивает максимальные степени свободы и, следовательно, максимальное усиление среди всех алгоритмов STAP. Он часто используется в качестве основы для сравнения различных алгоритмов STAP.
Хотя SMI является оптимальным алгоритмом STAP, он имеет несколько врожденных недостатков, включая высокую стоимость вычислений, поскольку использует полные размерные данные каждой ячейки. Что еще более важно, SMI требует стационарной среды для многих импульсов. Такого рода среда не часто встречается в реальных приложениях. Поэтому было предложено много алгоритмов STAP с уменьшенным размером.
Адаптивный компенсатор DPCA (ADPCA) отфильтровывает беспорядок таким же образом, как и DPCA, но он также имеет возможность подавлять глушитель, так как он оценивает ковариационную матрицу помех, используя два последовательных импульса. Поскольку используются только два импульса, вычисление значительно уменьшается. Кроме того, поскольку алгоритм адаптирован к помехам, он также может допускать некоторое возмущение движения.
Теперь определите компенсатор ADPCA, а затем примените его к принятому сигналу.
stapadpca = phased.ADPCACanceller('SensorArray', ula, 'PRF', prf, ... 'PropagationSpeed', c, 'OperatingFrequency', fc, ... 'Direction', rxmainlobedir, 'Doppler', tgtDp, ... 'WeightsOutputPort', true,... 'NumGuardCells', 4, 'NumTrainingCells', 100)
stapadpca =
phased.ADPCACanceller with properties:
SensorArray: [1x1 phased.ULA]
PropagationSpeed: 299792458
OperatingFrequency: 1.0000e+10
PRFSource: 'Property'
PRF: 2.9979e+04
DirectionSource: 'Property'
Direction: [2x1 double]
NumPhaseShifterBits: 0
DopplerSource: 'Property'
Doppler: 6.3429e+03
NumGuardCells: 4
NumTrainingCells: 100
WeightsOutputPort: true
PreDopplerOutput: false
[y,w] = stapadpca(ReceivePulse,tgtCellIdx); plot([tgtRng tgtRng],[0 2e-6],rngbin,abs(y)); xlabel('Range (m)'), ylabel('Magnitude'); title('ADPCA Canceller Output (with Jammer)')

plotResponse(angdopresp,w,'NormalizeDoppler',true); title('ADPCA Weights Angle Doppler Response at 0 degrees Elevation')

График временной области показывает, что сигнал успешно восстановлен. Угловая доплеровская характеристика весов ADPCA аналогична реакции, производимой весами SMI.
Этот пример представил краткое введение в пространственно-временную адаптивную обработку и проиллюстрировал, как использовать различные алгоритмы STAP, а именно SMI, DPCA и ADPCA, для подавления помех от беспорядков и помех в принимаемых импульсах.
[1] J. R. Guerci, пространственно-временная адаптивная обработка для радаров, Artech House, 2003