exponenta event banner

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

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

Настройка радиолокационной системы

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

load BasicMonostaticRadarExampleData;

Моделирование системы

Цели

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

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);

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

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

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

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 м/с друг от друга, чтобы быть разделяемыми в доплеровском спектре. Для улучшения способности различать различные целевые скорости необходимо больше импульсов. Однако количество имеющихся импульсов также ограничено радиальной скоростью цели. Поскольку доплеровская обработка ограничена заданным диапазоном, все импульсы, используемые в обработке, должны быть собраны до того, как цель переместится из одного бункера диапазона в следующий.

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

Доплеровский спектр может быть сформирован с использованием периодограммы. Мы обнуляем последовательность медленного времени до 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;

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

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

Давайте сначала построим график доплеровского спектра, соответствующего диапазону 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.

Обратите внимание, что мы заинтересованы только в обнаружении пиков, поэтому сами значения спектра не являются критическими. На графике доплеровского спектра мы замечаем, что 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 м/с, что соответствует тому факту, что цель на данной дальности не движется.

Резюме

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