Этот пример дает краткое введение в методы пространственно-временной адаптивной обработки (STAP) и иллюстрирует, как использовать Phased Array System 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
Задайте ULA с 6 элементами с пользовательским шаблоном элемента. Интервал элемента принят, чтобы быть одной половиной длины волны формы волны.
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)
Радарный Setup
Затем смонтируйте антенную решетку на излучателе/коллекторе. Затем задайте радарное движение. Радиолокационная система смонтирована на плоскости, которая управляет 1 000 метров над землей. Плоскость летит вдоль оси массивов 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]);
Передатчик помех
Цель возвращает желаемый сигнал; однако, несколько интерференции также присутствуют в полученном сигнале. Если Radar Toolbox доступен, установите переменную 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 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],... '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 импульсов перед обработкой. Seed генератора случайных чисел из модели передатчика помех собирается в константу получить восстанавливаемые результаты.
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
Целевой диапазон составляет 1 732 м.
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')
Теперь исследуйте возвраты в 2D углу Доплер (или пространство-время) область. В общем случае ответ сгенерирован путем сканирования всех областей значений и углов азимута для данного угла возвышения. Поскольку мы знаем точно, где цель, мы можем вычислить ее область значений и угол возвышения относительно антенной решетки.
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 часто используется на ULAs, но требует специальных условий движения платформы. Платформа должна пройти ось антенны массивов и на скорости, таким образом, что во время одного импульсного интервала, платформа перемещается точно половина интервала элемента. Система, используемая здесь, настраивается, как описано в более ранних разделах, чтобы удовлетворить этим условиям.
Примите, что 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]
где k является скалярным фактором, R является пространственно-временной ковариационной матрицей интерференционного сигнала, и s является желаемым руководящим вектором пространства-времени. Точная информация R часто недоступна, таким образом, мы будем использовать алгоритм демонстрационной матричной инверсии (SMI). Алгоритм оценивает R от выборок учебной ячейки и затем использует его в вышеупомянутом уравнении.
Теперь задайте формирователь луча SMI и примените его к сигналу. В дополнение к информации, необходимой в DPCA, формирователь луча SMI должен знать количество защитных ячеек и количество учебных ячеек. Алгоритм использует выборки в учебных ячейках, чтобы оценить интерференцию. Таким образом мы не должны использовать ячейки, которые являются близко к целевой ячейке для оценок, потому что они могут содержать некоторую целевую информацию, i.e., мы должны задать защитные ячейки. Количество защитных ячеек должно быть четным числом, которое будет разделено одинаково перед и позади целевой ячейки. Количество учебных ячеек также должно быть четным числом и разделить одинаково перед и позади цели. Обычно, чем больше количество учебных ячеек, тем лучше интерференционная оценка.
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] Й. Р. Гуерчи, пространственно-временная адаптивная обработка для радара, дома Artech, 2003