Этот пример показывает, как разработать моностатический импульсный радар, чтобы оценить целевой диапазон. Моностатическому радару расположили передатчик с получателем. Передатчик генерирует импульс, который достигает намеченной цели и производит эхо, полученное получателем. Путем измерения местоположения эха вовремя, мы можем оценить область значений цели.
Этот пример фокусируется на импульсной разработке радарных систем, которая может достигнуть набора спецификаций проекта. Это обрисовывает в общих чертах шаги, чтобы перевести спецификации проекта, такие как вероятность обнаружения и разрешения области значений, в параметры радиолокационной системы, такие как степень передачи и ширина импульса. Это также моделирует среду и предназначается, чтобы синтезировать полученный сигнал. Наконец, методы обработки сигналов применяются к полученному сигналу обнаружить области значений целей.
Цель проекта этой импульсной радиолокационной системы состоит в том, чтобы обнаружить неколеблющиеся цели с радарным сечением (RCS) на по крайней мере один квадратный метр на расстоянии до 5 000 метров от радара с разрешением области значений 50 метров. Желаемый индекс производительности является вероятностью обнаружения (Фунт) 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);
Обратите внимание на то, что, потому что мы моделируем моностатический радар, получатель не может быть включен, пока передатчик не выключен. Поэтому мы устанавливаем свойство EnableInputPort на истину так, чтобы сигнал синхронизации мог быть передан с передатчика на получатель.
Передатчик
Самый критический параметр передатчика является пиковой степенью передачи. Необходимая пиковая мощность связана со многими факторами включая максимальную однозначную область значений, необходимый ОСШ в получателе и ширину импульса формы волны. Среди этих факторов необходимый ОСШ в получателе определяется целью проекта Фунта и PFA, а также схемы обнаружения, реализованной в получателе.
Отношение между Фунтом, PFA и ОСШ может быть лучше всего представлено кривой рабочих характеристик получателя (ROC). Мы можем сгенерировать кривую, где Фунт является функцией PFA для варьирования SNRs использование следующей команды
snr_db = [-inf, 0, 3, 10, 13]; rocsnr(snr_db,'SignalType','NonfluctuatingNoncoherent');
Кривые ROC показывают, что, чтобы удовлетворить цели проекта PFA = 1e-6 и Фунт = 0.9, ОСШ полученного сигнала должен превысить 13 дБ. Это - довольно высокое требование и не очень практично. Чтобы сделать радиолокационную систему более выполнимой, мы можем использовать импульсный метод интегрирования, чтобы уменьшать необходимый ОСШ. Если мы принимаем решение интегрировать 10 импульсов, кривая может быть сгенерирована как
num_pulse_int = 10; rocsnr([0 3 5],'SignalType','NonfluctuatingNoncoherent',... 'NumPulses',num_pulse_int);
Мы видим, что необходимая степень спала приблизительно до 5 дБ. Дальнейшее сокращение ОСШ может быть достигнуто путем интеграции большего количества импульсов, но количество импульсов, доступных для интегрирования, обычно ограничивается из-за движения цели или неоднородности среды.
Подход выше считывает значение ОСШ от кривой, но часто желательно вычислить только необходимое значение. Для некогерентной схемы обнаружения вычисление необходимого ОСШ, в теории, довольно комплексной. К счастью, существуют хорошие доступные приближения, такие как уравнение Альберсхайма. Используя уравнение Альберсхайма, необходимый ОСШ может быть выведен как
snr_min = albersheim(pd, pfa, num_pulse_int)
snr_min = 4.9904
Если мы получаем необходимый ОСШ в получателе, пиковая мощность в передатчике может быть вычислена с помощью основного уравнения радиолокации. Здесь мы принимаем, что передатчик имеет усиление 20 дБ.
Чтобы вычислить пиковую мощность с помощью основного уравнения радиолокации, мы также должны знать длину волны сигнала распространения, который связан с рабочей частотой системы. Здесь мы устанавливаем рабочую частоту на 10 ГГц.
tx_gain = 20; fc = 10e9; lambda = prop_speed/fc; peak_power = radareqpow(lambda,max_range,snr_min,pulse_width,... 'RCS',tgt_rcs,'Gain',tx_gain)
peak_power = 5.2265e+03
Обратите внимание на то, что получившаяся степень составляет приблизительно 5 кВт, который очень разумен. В сравнении, если бы мы не использовали импульсный метод интегрирования, получившаяся пиковая мощность составила бы 33 кВт, который огромен.
Со всей этой информацией мы можем сконфигурировать передатчик.
transmitter = phased.Transmitter(... 'Gain',tx_gain,... 'PeakPower',peak_power,... 'InUseOutputPort',true);
Снова, поскольку этот пример моделирует моностатическую радиолокационную систему, InUseOutputPort собирается в истину вывести состояние передатчика. Этот сигнал состояния может затем использоваться, чтобы включить получатель.
Теплоотвод и коллектор
В радиолокационной системе сигнал распространяет в форме электромагнитной волны. Поэтому сигнал должен быть излучен и собран антенной, используемой в радиолокационной системе. Это - то, где теплоотвод и коллектор входят в изображение.
В моностатической радиолокационной системе теплоотвод и коллектор совместно используют ту же антенну, таким образом, мы сначала зададим антенну. Чтобы упростить проект, мы выбираем изотропную антенну. Обратите внимание на то, что антенна должна смочь работать на рабочей частоте системы (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 импульсов получить сигнала.
Мы устанавливаем seed для шумовой генерации в получателе так, чтобы мы могли воспроизвести те же результаты.
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);
Порог в этих фигурах для цели отображения только. Обратите внимание на то, что вторая и третья цель возвращается, намного более слабы, чем первый возврат, потому что они более далеки от радара. Поэтому полученная степень сигнала является зависимым области значений, и порог несправедлив к целям, расположенным в различных областях значений.
Согласованный фильтр
Согласованный фильтр предлагает усиление обработки, которое улучшает порог обнаружения. Это применяет операцию свертки к полученному сигналу с локальной, инвертированной временем, и спрягаемой копией переданной формы волны. Поэтому мы должны задать переданную форму волны при создании нашего согласованного фильтра. Полученные импульсы сначала передаются через согласованный фильтр, чтобы улучшить ОСШ прежде, чем сделать импульсное интегрирование, пороговое обнаружение, и т.д.
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);
После этапа согласованного фильтра улучшен ОСШ. Однако, потому что полученная степень сигнала зависит от области значений, возврат близкой цели еще намного более силен, чем возврат цели дальше. Поэтому, когда вышеупомянутые данные показывают, шум от интервала близкого расстояния также имеет значительный шанс превышения порога и затенения цель дальше. Гарантировать порог справедливо ко всем целям в обнаруживаемой области значений, мы можем использовать время, отличаясь усиление, чтобы компенсировать зависимую потерю области значений в полученном эхе.
Чтобы компенсировать зависимую потерю области значений, мы сначала вычисляем логические элементы области значений, соответствующие каждой выборке сигнала, и затем вычисляем потерю пути к свободному пространству, соответствующую каждому логическому элементу области значений. Если та информация получена, мы применяем время, отличаясь усиление к полученному импульсу так, чтобы возвраты состояли в том как будто от того же диапазона ссылки (максимальная обнаруживаемая область значений).
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);
Время, отличаясь операция усиления приводит к пандусу в уровне шума. Однако целевой возврат является теперь независимой областью значений. Постоянный порог может теперь использоваться для обнаружения через целую обнаруживаемую область значений.
Заметьте, что на данном этапе, порог выше уровня максимальной мощности, содержавшегося в каждом импульсе. Поэтому ничто на данном этапе еще не может быть обнаружено. Мы должны выполнить импульсное интегрирование, чтобы гарантировать, что степень возвращенного эха от целей может превзойти порог при отъезде уровня шума ниже панели. Это ожидается, поскольку это - импульсное интегрирование, которое позволяет нам использовать более низкий train импульса степени.
Некогерентное интегрирование
Мы можем далее улучшить ОСШ, некогерентно интегрировав (видео интегрирование) полученные импульсы.
rxpulses = pulsint(rxpulses,'noncoherent'); helperRadarPulsePlot(rxpulses,threshold,... fast_time_grid,slow_time_grid,1);
После видео этапа интегрирования данные готовы к итоговому этапу обнаружения. Это видно от фигуры, которая все три эха от целей выше порога, и поэтому может быть обнаружено.
Обнаружение области значений
Наконец, пороговое обнаружение выполняется на интегрированных импульсах. Схема обнаружения идентифицирует peaks и затем переводит их положения в области значений целей.
[~,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 м), которые могут быть достигнуты радиолокационной системой.
В этом примере мы разработали радиолокационную систему на основе набора данных целей производительности. От этих целей производительности были вычислены много параметров проекта радиолокационной системы. Пример также показал, как использовать разработанный радар, чтобы выполнить задачу обнаружения области значений. В этом примере радар использовал прямоугольную форму волны. Заинтересованные читатели могут обратиться к Проекту Формы волны, чтобы Улучшать Производительность Существующей Радиолокационной системы для примера с помощью формы волны щебета.