В этом примере показано, как имитировать принятый сигнал моностатического импульсного радара для оценки целевого диапазона. Моностатический радар имеет передатчик, расположенный рядом с приемником. Передатчик генерирует импульс, который попадает в цель и выдает эхо, принятое приемником. Измеряя местоположение эхо-сигналов во времени, мы можем оценить дальность цели.
В этом примере основное внимание уделяется конструкции импульсной радиолокационной системы, которая может обеспечить набор конструктивных характеристик. В нем описываются этапы преобразования характеристик конструкции, таких как вероятность обнаружения и разрешение дальности, в параметры радиолокационной системы, такие как мощность передачи и длительность импульса. Он также моделирует среду и цели для синтеза принятого сигнала. Наконец, методы обработки сигналов применяются к принятому сигналу для обнаружения диапазонов целей.
Расчетной целью данной импульсной радиолокационной системы является обнаружение неопустящихся целей с не менее чем одним квадратным метровым сечением РЛС (РСК) на расстоянии до 5000 метров от РЛС с разрешением по дальности 50 метров. Требуемым показателем производительности является вероятность обнаружения (Pd) 0,9 и вероятность ложного аварийного сигнала (Pfa) ниже 1e-6. Поскольку когерентное обнаружение требует информации о фазе и, следовательно, является более дорогостоящим в вычислительном отношении, мы применяем некогерентную схему обнаружения. Кроме того, в этом примере предполагается наличие среды свободного пространства.
pd = 0.9; % Probability of detection pfa = 1e-6; % Probability of false alarm max_range = 5000; % Maximum unambiguous range range_res = 50; % Required range resolution tgt_rcs = 1; % Required target radar cross section
Нам нужно определить несколько характеристик радиолокационной системы, таких как форма сигнала, приемник, передатчик и антенна, используемая для излучения и сбора сигнала.
Форма волны
В этом примере мы выбираем прямоугольную форму сигнала. Требуемое разрешение диапазона определяет ширину полосы волны, которая в случае прямоугольной формы волны определяет ширину импульса.
Другим важным параметром формы импульса является частота повторения импульса (PRF). PRF определяется максимальным однозначным диапазоном.
prop_speed = physconst('LightSpeed'); % Propagation speed pulse_bw = prop_speed/(2*range_res); % Pulse bandwidth pulse_width = 1/pulse_bw; % Pulse width prf = prop_speed/(2*max_range); % Pulse repetition frequency fs = 2*pulse_bw; % Sampling rate waveform = phased.RectangularWaveform(... 'PulseWidth',1/pulse_bw,... 'PRF',prf,... 'SampleRate',fs);
Обратите внимание, что мы устанавливаем частоту дискретизации в два раза больше полосы пропускания.
Характеристики шума приемника
Мы предполагаем, что единственным шумом, присутствующим в приемнике, является тепловой шум, поэтому в этом моделировании нет никакого беспорядка. Мощность теплового шума связана с полосой пропускания приемника. Полоса пропускания шума приемника устанавливается равной полосе пропускания сигнала. Это часто происходит в реальных системах. Мы также предполагаем, что приемник имеет коэффициент усиления 20 дБ и показатель шума 0 дБ.
noise_bw = pulse_bw; receiver = phased.ReceiverPreamp(... 'Gain',20,... 'NoiseFigure',0,... 'SampleRate',fs,... 'EnableInputPort',true);
Обратите внимание, что, поскольку мы моделируем моностатический радар, приемник не может быть включен до тех пор, пока передатчик не выключен. Поэтому мы устанавливаем для свойства EnureInputPort значение true, чтобы сигнал синхронизации мог быть передан от передатчика к приемнику.
Передатчик
Наиболее критическим параметром передатчика является пиковая мощность передачи. Требуемая пиковая мощность связана со многими факторами, включая максимальный однозначный диапазон, требуемое SNR в приемнике и длительность импульса формы сигнала. Среди этих факторов требуемое SNR на приемнике определяется проектной целью Pd и Pfa, а также схемой обнаружения, реализуемой на приемнике.
Соотношение между Pd, Pfa и SNR может быть наилучшим образом представлено кривой рабочих характеристик приемника (ROC). Мы можем создать кривую, где Pd является функцией Pfa для изменяющихся SNR с помощью следующей команды
snr_db = [-inf, 0, 3, 10, 13]; rocsnr(snr_db,'SignalType','NonfluctuatingNoncoherent');

Кривые ROC показывают, что для достижения проектных целей Pfa = 1e-6 и Pd = 0,9 SNR принимаемого сигнала должно превышать 13 дБ. Это достаточно высокое требование и не очень практично. Чтобы сделать радиолокационную систему более осуществимой, мы можем использовать метод интеграции импульсов для уменьшения требуемого SNR. Если мы решили интегрировать 10 импульсов, кривая может быть сгенерирована как
num_pulse_int = 10; rocsnr([0 3 5],'SignalType','NonfluctuatingNoncoherent',... 'NumPulses',num_pulse_int);

Мы видим, что требуемая мощность упала примерно до 5 дБ. Дальнейшее снижение ОСШ может быть достигнуто за счет интегрирования большего количества импульсов, но количество импульсов, доступных для интегрирования, обычно ограничено из-за движения мишени или неоднородности окружающей среды.
Подход, описанный выше, считывает значение ОСШ из кривой, но часто желательно вычислить только требуемое значение. Для схемы некогерентного обнаружения вычисление требуемого SNR является, в теории, достаточно сложным. К счастью, имеются хорошие аппроксимации, такие как уравнение Альберсхайма. Используя уравнение Альберсхайма, требуемое SNR может быть получено как
snr_min = albersheim(pd, pfa, num_pulse_int)
snr_min =
4.9904
Как только мы получим требуемое SNR в приемнике, пиковая мощность в передатчике может быть вычислена с использованием уравнения радара. Здесь предполагается, что передатчик имеет коэффициент усиления 20 дБ.
Для вычисления пиковой мощности с помощью радиолокационного уравнения нам также необходимо знать длину волны распространяющегося сигнала, которая связана с рабочей частотой системы. Здесь мы устанавливаем рабочую частоту 10 ГГц.
tx_gain = 20;
fc = 10e9;
lambda = prop_speed/fc;
peak_power = ((4*pi)^3*noisepow(1/pulse_width)*max_range^4*...
db2pow(snr_min))/(db2pow(2*tx_gain)*tgt_rcs*lambda^2)
peak_power = 5.2265e+03
Обратите внимание, что результирующая мощность составляет около 5 кВт, что очень разумно. Для сравнения, если бы мы не использовали метод интеграции импульсов, результирующая пиковая мощность составила бы 33 кВт, что является огромным.
Со всей этой информацией можно сконфигурировать датчик.
transmitter = phased.Transmitter(... 'Gain',tx_gain,... 'PeakPower',peak_power,... 'InUseOutputPort',true);
Опять же, поскольку в этом примере моделируется моностатическая радиолокационная система, InUseOutputPort устанавливается в значение true для вывода состояния передатчика. Этот сигнал состояния может затем использоваться для включения приемника.
Радиатор и коллектор
В радиолокационной системе сигнал распространяется в виде электромагнитной волны. Поэтому сигнал должен излучаться и собираться антенной, используемой в радиолокационной системе. Здесь радиатор и коллектор попадают на картинку.
В моностатической радиолокационной системе излучатель и коллектор имеют одну и ту же антенну, поэтому мы сначала определим антенну. Для упрощения конструкции выбираем изотропную антенну. Обратите внимание, что антенна должна быть способна работать на рабочей частоте системы (10 ГГц), поэтому мы задаем диапазон частот антенны 5-15 ГГц.
Мы предполагаем, что антенна неподвижна.
antenna = phased.IsotropicAntennaElement(... 'FrequencyRange',[5e9 15e9]); sensormotion = phased.Platform(... 'InitialPosition',[0; 0; 0],... 'Velocity',[0; 0; 0]);
С антенной и рабочей частотой мы определяем как излучатель, так и коллектор.
radiator = phased.Radiator(... 'Sensor',antenna,... 'OperatingFrequency',fc); collector = phased.Collector(... 'Sensor',antenna,... 'OperatingFrequency',fc);
Это завершает настройку радиолокационной системы. В следующих разделах будут определены другие объекты, такие как цель и среда, необходимые для моделирования. Затем мы смоделируем возврат сигнала и выполним определение дальности для моделируемого сигнала.
Цели
Чтобы проверить способность нашего радара обнаруживать цели, мы должны сначала определить цели. Предположим, что в космосе есть 3 стационарные, не колеблющиеся цели. Их положения и сечения РЛС приведены ниже.
tgtpos = [[2024.66;0;0],[3518.63;0;0],[3845.04;0;0]]; tgtvel = [[0;0;0],[0;0;0],[0;0;0]]; tgtmotion = phased.Platform('InitialPosition',tgtpos,'Velocity',tgtvel); tgtrcs = [1.6 2.2 1.05]; target = phased.RadarTarget('MeanRCS',tgtrcs,'OperatingFrequency',fc);
Среда распространения
Для моделирования сигнала необходимо также определить канал распространения между радиолокационной системой и каждой целью.
channel = phased.FreeSpace(... 'SampleRate',fs,... 'TwoWayPropagation',true,... 'OperatingFrequency',fc);
Поскольку в этом примере используется система моностатического радара, каналы настраиваются для моделирования двухсторонних задержек распространения.
Синтез сигналов
Теперь мы готовы смоделировать всю систему.
Синтезированный сигнал представляет собой матрицу данных с быстрым временем (время внутри каждого импульса) вдоль каждого столбца и медленным временем (время между импульсами) вдоль каждой строки. Для визуализации сигнала полезно определить как сетку быстрого времени, так и сетку медленного времени.
fast_time_grid = unigrid(0,1/fs,1/prf,'[)');
slow_time_grid = (0:num_pulse_int-1)/prf;
Следующий контур моделирует 10 импульсов принимаемого сигнала.
Мы задаем начальное число для генерации шума в приемнике, чтобы мы могли воспроизвести те же результаты.
receiver.SeedSource = 'Property'; receiver.Seed = 2007; % Pre-allocate array for improved processing speed rxpulses = zeros(numel(fast_time_grid),num_pulse_int); for m = 1:num_pulse_int % Update sensor and target positions [sensorpos,sensorvel] = sensormotion(1/prf); [tgtpos,tgtvel] = tgtmotion(1/prf); % Calculate the target angles as seen by the sensor [tgtrng,tgtang] = rangeangle(tgtpos,sensorpos); % Simulate propagation of pulse in direction of targets pulse = waveform(); [txsig,txstatus] = transmitter(pulse); txsig = radiator(txsig,tgtang); txsig = channel(txsig,sensorpos,tgtpos,sensorvel,tgtvel); % Reflect pulse off of targets tgtsig = target(txsig); % Receive target returns at sensor rxsig = collector(tgtsig,tgtang); rxpulses(:,m) = receiver(rxsig,~(txstatus>0)); end
Порог обнаружения
Детектор сравнивает мощность сигнала с заданным порогом. В радиолокационных приложениях порог часто выбирают таким образом, чтобы Pfa был ниже определенного уровня. В этом случае мы предполагаем, что шум является белым гауссовым, и обнаружение является некогерентным. Поскольку мы также используем 10 импульсов для интегрирования импульсов, порог мощности сигнала задается
npower = noisepow(noise_bw,receiver.NoiseFigure,... receiver.ReferenceTemperature); threshold = npower * db2pow(npwgnthresh(pfa,num_pulse_int,'noncoherent'));
Мы строим график первых двух принятых импульсов с порогом
num_pulse_plot = 2;
helperRadarPulsePlot(rxpulses,threshold,...
fast_time_grid,slow_time_grid,num_pulse_plot);

Пороговое значение на этих рисунках используется только для отображения. Заметим, что второй и третий возврат цели намного слабее, чем первый возврат, потому что они находятся дальше от радара. Поэтому мощность принимаемого сигнала зависит от дальности, а пороговое значение является несправедливым по отношению к целям, расположенным на разных дальностях.
Сопоставленный фильтр
Согласованный фильтр предлагает выигрыш обработки, который улучшает порог обнаружения. Он свертывает принятый сигнал с локальной, реверсированной по времени и сопряженной копией передаваемого сигнала. Поэтому мы должны указать передаваемую форму сигнала при создании нашего согласованного фильтра. Принятые импульсы сначала проходят через согласованный фильтр для улучшения SNR перед выполнением интегрирования импульсов, обнаружения порога и т.д.
matchingcoeff = getMatchedFilter(waveform); matchedfilter = phased.MatchedFilter(... 'Coefficients',matchingcoeff,... 'GainOutputPort',true); [rxpulses, mfgain] = matchedfilter(rxpulses);
Согласованный фильтр вводит внутреннюю задержку фильтра, так что местоположения пика (максимальная выходная выборка SNR) больше не выравниваются с истинными целевыми местоположениями. Чтобы компенсировать эту задержку, в этом примере мы переместим выходной сигнал согласованного фильтра вперед и поместим нули в конце. Заметим, что в реальных системах, поскольку данные собираются непрерывно, на самом деле нет конца.
matchingdelay = size(matchingcoeff,1)-1; rxpulses = buffer(rxpulses(matchingdelay+1:end),size(rxpulses,1));
Затем пороговое значение увеличивается на коэффициент усиления обработки согласованного фильтра.
threshold = threshold * db2pow(mfgain);
На следующем графике показаны те же два импульса после их прохождения через согласованный фильтр.
helperRadarPulsePlot(rxpulses,threshold,...
fast_time_grid,slow_time_grid,num_pulse_plot);

После согласованного этапа фильтрации SNR улучшается. Однако, поскольку мощность принимаемого сигнала зависит от дальности, возврат близкой цели все еще намного сильнее, чем возврат цели дальше. Следовательно, как показано на вышеприведенной фигуре, шум из ячейки с близким расстоянием также имеет значительный шанс превзойти порог и затенить мишень дальше. Чтобы обеспечить справедливый порог для всех целей в пределах обнаруживаемого диапазона, мы можем использовать изменяющийся во времени выигрыш для компенсации зависящих от диапазона потерь в принятом эхо-сигнале.
Чтобы компенсировать зависящие от диапазона потери, сначала вычисляем элементы диапазона, соответствующие каждой выборке сигнала, а затем вычисляем потери пути свободного пространства, соответствующие каждому элементу диапазона. Как только эта информация получена, мы применяем изменяющийся во времени коэффициент усиления к принятому импульсу так, чтобы результаты были как будто из одного и того же опорного диапазона (максимально обнаруживаемого диапазона).
range_gates = prop_speed*fast_time_grid/2; tvg = phased.TimeVaryingGain(... 'RangeLoss',2*fspl(range_gates,lambda),... 'ReferenceLoss',2*fspl(max_range,lambda)); rxpulses = tvg(rxpulses);
Теперь нарисуем те же два импульса после нормализации диапазона
helperRadarPulsePlot(rxpulses,threshold,...
fast_time_grid,slow_time_grid,num_pulse_plot);

Изменяющаяся во времени операция усиления приводит к нарастанию уровня шума. Однако целевой возврат теперь не зависит от диапазона. Постоянный порог теперь может использоваться для обнаружения по всему обнаруживаемому диапазону.
Обратите внимание, что на этом этапе пороговое значение выше максимального уровня мощности, содержащегося в каждом импульсе. Поэтому на данном этапе пока ничего не обнаруживается. Нам нужно выполнить интеграцию импульсов, чтобы мощность возвращенных эхо-сигналов от целей могла превзойти порог, оставляя уровень шума ниже планки. Это ожидается, так как именно интеграция импульсов позволяет использовать более низкую силовую последовательность импульсов.
Некогерентная интеграция
Мы можем дополнительно улучшить SNR путем некогерентной интеграции (интеграции видео) принятых импульсов.
rxpulses = pulsint(rxpulses,'noncoherent'); helperRadarPulsePlot(rxpulses,threshold,... fast_time_grid,slow_time_grid,1);

После стадии интеграции видео данные готовы к заключительной стадии обнаружения. Из рисунка видно, что все три эхо-сигнала от целей находятся выше порогового значения и поэтому могут быть обнаружены.
Обнаружение дальности
Наконец, определение порога выполняется на интегрированных импульсах. Схема обнаружения идентифицирует пики и затем преобразует их позиции в диапазоны целей.
[~,range_detect] = findpeaks(rxpulses,'MinPeakHeight',sqrt(threshold));
Истинные диапазоны и обнаруженные диапазоны целей показаны ниже:
true_range = round(tgtrng) range_estimates = round(range_gates(range_detect))
true_range =
2025 3519 3845
range_estimates =
2025 3525 3850
Следует отметить, что эти оценки дальности являются точными только до разрешения дальности (50 м), которое может быть достигнуто радиолокационной системой.
В этом примере мы разработали радиолокационную систему, основанную на наборе заданных рабочих целей. Из этих рабочих целей было рассчитано множество конструктивных параметров радиолокационной системы. В примере также показано, как использовать проектируемый радар для выполнения задачи обнаружения дальности. В этом примере радар использовал прямоугольную форму сигнала. Для примера, использующего чирп-сигнал, заинтересованные читатели могут обратиться к документу Waveform Design to Implicate Range Performance of a Existing System.