Доплеровская оценка

Этот пример показывает моностатический импульсный радар, обнаруживающий радиальную скорость движущихся целей в определенных областях значений. Скорость определяется доплеровским сдвигом, вызванным движущимися целями. Мы сначала идентифицируем существование цели в заданной области значений, а затем используем Доплеровскую обработку, чтобы определить радиальную скорость цели в этой области значений.

Система радиолокации Setup

Во-первых, зададим радиолокационную систему. Поскольку в этом примере основное внимание уделяется доплеровской обработке, мы используем радиолокационную систему, созданную в примере Симуляции Тестовых Сигналов для Радиолокационного Приемника. Читателям рекомендуется изучить детали разработки радарных систем с помощью этого примера.

load BasicMonostaticRadarExampleData;

Системная симуляция

Цели

Доплеровская обработка использует доплеровский сдвиг, вызванный движущейся мишенью. Теперь мы определяем три цели, определяя их положения, радиолокационные сечения (RCS) и скорости.

tgtpos = [[1200; 1600; 0],[3543.63; 0; 0],[1600; 0; 1200]];
tgtvel = [[60; 80; 0],[0;0;0],[0; 100; 0]];
tgtmotion = phased.Platform('InitialPosition',tgtpos,'Velocity',tgtvel);

tgtrcs = [1.3 1.7 2.1];
fc = radiator.OperatingFrequency;
target = phased.RadarTarget('MeanRCS',tgtrcs,'OperatingFrequency',fc);

Обратите внимание, что первая и третья цели расположены на области значений 2000 м и обе перемещаются со скоростью 100 м/с. Различие, что первая цель движется вдоль радиального направления, а третья - в тангенциальном направлении. Вторая цель не движется.

Окружение

Нам также нужно настроить окружение распространения для каждой цели. Поскольку мы используем моностатический радар, мы используем двухстороннюю модель распространения.

fs = waveform.SampleRate;

channel = phased.FreeSpace(...
    'SampleRate',fs,...
    'TwoWayPropagation',true,...
    'OperatingFrequency',fc);

Синтез сигнала

С помощью радиолокационной системы, окружения и заданных целей мы теперь можем симулировать принятый сигнал как эхо, отраженное от целей. Моделируемые данные являются матрицей данных с быстрым временем (временем в каждом импульсе) вдоль каждого столбца и медленным временем (временем между импульсами) между каждой строкой.

Нам нужно задать seed для генерации шума в приемнике, чтобы мы могли воспроизводить те же результаты.

receiver.SeedSource = 'Property';
receiver.Seed = 2009;

prf = waveform.PRF;
num_pulse_int = 10;

fast_time_grid = unigrid(0,1/fs,1/prf,'[)');
slow_time_grid = (0:num_pulse_int-1)/prf;

% 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

Доплеровская оценка

Обнаружение области значений

Чтобы иметь возможность оценить доплеровский сдвиг целей, нам сначала нужно определить местоположение целей посредством обнаружения области значений. Поскольку Доплеровский сдвиг расширяет степень сигнала в I и Q каналы, мы должны полагаться на энергию сигнала, чтобы сделать обнаружение. Это означает, что мы используем некогерентные схемы обнаружения.

Процесс обнаружения подробно описан в вышеупомянутом примере, поэтому мы просто выполняем необходимые шаги здесь, чтобы оценить целевые области значений.

% calculate initial threshold
pfa = 1e-6;
% in loaded system, noise bandwidth is half of the sample rate
noise_bw = receiver.SampleRate/2; 
npower = noisepow(noise_bw,...
    receiver.NoiseFigure,receiver.ReferenceTemperature);
threshold = npower * db2pow(npwgnthresh(pfa,num_pulse_int,'noncoherent'));

% apply matched filter and update the threshold
matchingcoeff = getMatchedFilter(waveform);
matchedfilter = phased.MatchedFilter(...
    'Coefficients',matchingcoeff,...
    'GainOutputPort',true);
[rxpulses, mfgain] = matchedfilter(rxpulses);
threshold = threshold * db2pow(mfgain);

% compensate the matched filter delay
matchingdelay = size(matchingcoeff,1)-1;
rxpulses = buffer(rxpulses(matchingdelay+1:end),size(rxpulses,1));

% apply time varying gain to compensate the range dependent loss
prop_speed = radiator.PropagationSpeed;
range_gates = prop_speed*fast_time_grid/2; 
lambda = prop_speed/fc;

tvg = phased.TimeVaryingGain(...
    'RangeLoss',2*fspl(range_gates,lambda),...
    'ReferenceLoss',2*fspl(prop_speed/(prf*2),lambda));

rxpulses = tvg(rxpulses);

% detect peaks from the integrated pulse
[~,range_detect] = findpeaks(pulsint(rxpulses,'noncoherent'),...
    'MinPeakHeight',sqrt(threshold));
range_estimates = round(range_gates(range_detect))
range_estimates = 1×2

        2000        3550

Эти оценки предполагают наличие целей в области значений 2000 м и 3550 м.

Допплеровский спектр

Как только мы успешно оценили области значений целей, мы можем затем оценить информацию Доплера для каждой цели.

Доплеровская оценка по существу является спектр процессом оценки. Поэтому первый этап доплеровской обработки состоит в том, чтобы сгенерировать доплеровский спектр из принятого сигнала.

Принятый сигнал после согласованного фильтра является матрицей, столбцы которой соответствуют принятым импульсам. В отличие от оценки области значений, Доплеровская обработка обрабатывает данные через импульсы (медленное время), которое находится вдоль строк матрицы данных. Поскольку мы используем 10 импульсов, существуют 10 выборки, доступных для допплеровской обработки. Поскольку существует одна выборка от каждого импульса, частота дискретизации для выборок Доплера является частотой повторения импульса (PRF).

Как предсказано теорией Фурье, максимальный однозначный доплеровский сдвиг, который может обнаружить импульсная радиолокационная система, составляет половину ее PRF. Это также переводит на максимальную однозначную скорость, которую может обнаружить радиолокационная система. В сложение количество импульсов определяет разрешение в допплеровском спектре, которое определяет разрешение оценок скорости.

max_speed = dop2speed(prf/2,lambda)/2
max_speed = 224.6888
speed_res = 2*max_speed/num_pulse_int
speed_res = 44.9378

Как показано на приведенном выше вычислении, в этом примере максимальная обнаруживаемая скорость составляет 225 м/с, либо приближаясь (-225), либо отходя (+ 225). Полученное доплеровское разрешение составляет около 45 м/с, что означает, что две скорости должны быть по меньшей мере 45 м/с, чтобы быть разделяемыми в доплеровском спектре. Чтобы улучшить способность различать различные целевые скорости, необходимо больше импульсов. Однако количество доступных импульсов также ограничено радиальной скоростью цели. Поскольку доплеровская обработка ограничена заданной областью значений, все импульсы, используемые в обработке, должны быть собраны до того, как цель перейдет от одну область значений значений к следующему.

Поскольку количество выборок Доплера в целом ограничено, обычно нули заполняют последовательность для интерполяции полученного спектра. Это не улучшит разрешение полученного спектра, но может улучшить оценку местоположения peaks в спектре.

Доплеровский спектр может быть сгенерирован с помощью периодограммы. Мы нули дополнить медленную временную последовательность 256 точками.

num_range_detected = numel(range_estimates);
[p1, f1] = periodogram(rxpulses(range_detect(1),:).',[],256,prf, ...
                'power','centered');
[p2, f2] = periodogram(rxpulses(range_detect(2),:).',[],256,prf, ...
                'power','centered');

Затем может быть вычислена скорость, соответствующая каждой выборке в спектре. Обратите внимание, что мы должны принять во факторе эффект туда и обратно.

speed_vec = dop2speed(f1,lambda)/2;

Доплеровская оценка

Чтобы оценить доплеровский сдвиг, сопоставленный с каждой мишенью, нам нужно найти местоположения peaks в каждом доплеровском спектре. В этом примере целевые значения присутствуют в двух разных областях значений, поэтому процесс оценки должен быть повторен для каждой области значений.

Давайте сначала построим график Допплеровского спектра, соответствующего области значений 2000 метров.

periodogram(rxpulses(range_detect(1),:).',[],256,prf,'power','centered');

Figure contains an axes. The axes with title Periodogram Power Spectrum Estimate contains an object of type line.

Обратите внимание, что мы заинтересованы только в обнаружении peaks, поэтому сами значения спектра не являются критическими. Из графика Допплеровского спектра мы замечаем, что на 5 дБ ниже максимального пика является хорошим порогом. Поэтому мы используем -5 в качестве нашего порога на нормализованном Допплеровском спектре.

spectrum_data = p1/max(p1);
[~,dop_detect1] = findpeaks(pow2db(spectrum_data),'MinPeakHeight',-5);
sp1 = speed_vec(dop_detect1)
sp1 = 2×1

 -103.5675
    3.5108

Результаты показывают, что на области значений 2000 м находятся две цели: одна со скоростью 3,5 м/с и другая с -104 м/с. Значение -104 м/с может быть легко сопоставлено с первой целью, поскольку первая цель отправляется с радиальной скоростью 100 м/с, что, учитывая разрешение Доплера этого примера, очень близко к оцененному значению. Значение 3,5 м/с требует большего объяснения. Поскольку третья цель движется по тангенциальному направлению, компонент скорости в радиальном направлении отсутствует. Поэтому радар не может обнаружить доплеровский сдвиг третьей цели. Истинная радиальная скорость третьей цели, следовательно, составляет 0 м/с, и оценка 3,5 м/с очень близка к истинному значению.

Обратите внимание, что эти две цели не могут быть различимы, используя только оценку области значений, потому что их значения области значений одинаковы.

Те же операции затем применяются к данным, соответствующим области значений 3550 метров.

periodogram(rxpulses(range_detect(2),:).',[],256,prf,'power','centered');

Figure contains an axes. The axes with title Periodogram Power Spectrum Estimate contains an object of type line.

spectrum_data = p2/max(p2);
[~,dop_detect2] = findpeaks(pow2db(spectrum_data),'MinPeakHeight',-5);
sp2 = speed_vec(dop_detect2)
sp2 = 0

Этот результат показывает предполагаемую скорость 0 м/с, что соответствует тому, что цель на этой области значений не движется.

Сводные данные

Этот пример показал простой способ оценки радиальной скорости движущихся целей с помощью импульсной радиолокационной системы. Мы сгенерировали спектр Доплера из полученного сигнала и оценили пиковые местоположения от спектра. Эти пиковые положения соответствуют радиальной скорости цели. Ограничения Доплеровской обработки также обсуждаются в примере.