Доплер Эстимэйшн

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

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

Обратите внимание на то, что первые и третьи цели и расположены в области значений 2 000 м и оба перемещаются со скоростью 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

Доплер Эстимэйшн

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

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

Эти оценки предлагают присутствие целей в области значений 2 000 м и 3 550 м.

Доплер Спектрум

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

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

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

Как показано в вычислении выше, в этом примере, максимальная обнаруживаемая скорость является 225m/s, или приближение (-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 в каждом Доплеровском спектре. В этом примере цели присутствуют в двух различных областях значений, таким образом, процесс оценки должен быть повторен для каждой области значений.

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

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

Обратите внимание на то, что мы только интересуемся обнаружением 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

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

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

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

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

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

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

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

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