Этот пример показывает эффекты импульсного сжатия, где переданный импульс модулируется и коррелируется с полученным сигналом. Импульсное сжатие используется в радаре и системах гидролокатора, чтобы улучшить отношение сигнал-шум (SNR) и разрешение области значений путем сокращения длительности эха.
Во-первых, визуализируйте импульсное сжатие с меандром. Создайте один второй длинный импульс с частотой f0
из 10
Гц и частота дискретизации fs
из 1
kHz.
fs = 1e3; tmax = 15; tt = 0:1/fs:tmax-1/fs; f0 = 10; T = 1; t = 0:1/fs:T-1/fs; pls = cos(2*pi*f0*t);
Создайте полученный сигнал, запускающийся в 5
секунды, базирующиеся от исходного импульса без любого шума. Сигнал представляет все больше удаленные цели, отраженные сигналы которых разделяются 2
секунды. Термин отражающей способности ref
определяет, какую часть переданной степени полученный импульс имеет. Фактор затухания att
диктует, сколько сила сигнала уменьшает в зависимости от времени.
t0 = 5; dt = 2*T; lgs = t0:dt:tmax; att = 1.1; ref = 0.2; rpls = pulstran(tt,[lgs;ref*att.^-(lgs-t0)]',pls,fs);
Добавьте Гауссов белый шум. Задайте ОСШ 15
дБ.
SNR = 15; r = randn(size(tt))*std(pls)/db2mag(SNR); rplsnoise = r+rpls;
Перекрестный коррелируйте полученный сигнал с переданным импульсом и постройте обработанный сигнал. Переданный импульс, полученный импульс без шума и шумный полученный сигнал построены в верхнем графике для удобства.
[m,lg] = xcorr(rplsnoise,pls); m = m(lg>=0); tm = lg(lg>=0)/fs; subplot(2,1,1) plot(tt,rplsnoise,t,pls,tt,rpls) xticks(lgs) legend('Noisy Received','Initial Pulse','Noiseless Received') title('Transmitted/Received Signals') ylabel('Magnitude (L.U.)') subplot(2,1,2) plot(tm,abs(m)) xticks(lgs) title('Matched Filter Output') xlabel('Time (s)') ylabel('Magnitude (L.U.)')
Если бы они были эхом от нескольких целей, было бы возможно получить общее представление о местоположениях целей, потому что эхо распространено достаточно далеко независимо. Однако, если цели ближе вместе, их соединение ответов.
dt = 1.5*T; lgs = t0:dt:tmax; rpls = pulstran(tt,[lgs;ref*att.^-(lgs-t0)]',pls,fs); rplsnoise = r + rpls; [m,lg] = xcorr(rplsnoise,pls); m = m(lg>=0); tm = lg(lg>=0)/fs; subplot(2,1,1) plot(tt,r,t,pls,tt,rpls) xticks(lgs) legend('Noisy Received','Initial Pulse','Noiseless Received') title('Transmitted/Received Signals') ylabel('Magnitude (L.U.)') subplot(2,1,2) plot(tm,abs(m)) xticks(lgs) title('Matched Filter Output') xlabel('Time (s)') ylabel('Magnitude (L.U.)')
Чтобы улучшить разрешение области значений или способность обнаружить близко расположенные цели, используют линейную частоту модулируемый импульс для взаимной корреляции.
Завершите ту же процедуру, но с комплексным чирплетом с частотой, которая запускается на уровне 0 Гц и линейно увеличивается до 10 Гц. Реальные радиолокационные системы часто используют линейные сигналы FM с комплексным знаком улучшить разрешение области значений, потому что ответ согласованного фильтра является больше и более узким. С тех пор существует мнимый компонент к щебету и согласованному фильтру, все графики должны быть сделаны с помощью действительной части формы волны.
pls = chirp(t,0,T,f0,'complex'); rpls = pulstran(tt,[lgs;ref*att.^-(lgs-t0)]',pls,fs); r = randn(size(tt))*std(pls)/db2mag(SNR); rplsnoise = r + rpls; [m,lg] = xcorr(rplsnoise,pls); m = m(lg>=0); tm = lg(lg>=0)/fs; subplot(2,1,1) plot(tt,real(r),t,real(pls),tt,real(rpls)) xticks(lgs) legend('Noisy Received','Initial Pulse','Noiseless Received') title('Transmitted/Received Signals') ylabel('Magnitude (L.U.)') subplot(2,1,2) plot(tm,abs(m)) xticks(lgs) title('Matched Filter Output') xlabel('Time (s)') ylabel('Magnitude (L.U.)')
Взаимная корреляция с линейным щебетом FM обеспечивает намного более прекрасное разрешение для целевого шума несмотря на целевое эхо, являющееся ближе вместе. Боковые лепестки эха также значительно уменьшаются по сравнению с прямоугольным щебетом, допуская более точное целевое обнаружение.
В то время как взаимная корреляция действительно улучшает разрешение области значений, алгоритм предоставляет себя лучше аналоговой аппаратной реализации. Чаще всего радиолокационные системы используют подобный процесс в названной согласованной фильтрации цифровой области, где к полученному сигналу применяют операцию свертки с инвертированной временем версией переданного импульса. Согласованная фильтрация часто делается в частотном диапазоне, потому что свертка во временном интервале эквивалентна умножению в частотном диапазоне, делая процесс быстрее. Поскольку начальный импульс инвертируется временем, отфильтрованный выход задерживается шириной импульса T
, который составляет 1 секунду.
Показать это, реверс времени исходный линейный импульс FM и заполнить импульс нулями, чтобы сделать импульс и переданную форму волны той же длиной. Вычислите и постройте преобразование Фурье сопряженного комплексного числа инвертированного временем импульса и сигнала с шумом. Умножьте эти два импульса в частотном диапазоне и постройте продукт
pls_rev = [fliplr(pls) zeros(1, length(r) - length(pls))]; PLS = fft(conj(pls_rev)); R = fft(rplsnoise); fft_conv = PLS.*R; faxis = linspace(-fs/2,fs/2,length(PLS)); clf subplot(3,1,1) plot(faxis,abs(fftshift(PLS))) title('FFT of Time-Reversed Transmitted Pulse') xlim([-100 100]) ylabel('Magnitude (L.U)') subplot(3,1,2) plot(faxis,abs(fftshift(R))) title('FFT of Noisy Signal') xlim([-100 100]) ylabel('Magnitude (L.U)') subplot(3,1,3) plot(faxis,abs(fftshift(fft_conv))) title("FFT of Multiplied Signals") xlabel('Frequency (Hz)') xlim([-100 100]) ylabel('Magnitude (L.U)')
Преобразуйте получившийся сигнал назад во временной интервал и постройте его.
pls_prod = ifft(fft_conv); clf plot((0:length(pls_prod)-1)/fs,abs(pls_prod)) xticks(lgs+T) xlabel('Time (s)') ylabel('Magnitude (L.U.)') title('Matched Filter Output')
Чтобы сгладить боковые лепестки после согласованной фильтрации, примените окно к переданному импульсу перед инвертированием времени. Шаги в предыдущем разделе, как показывали, лучше визуализировали процесс согласованной фильтрации в частотном диапазоне. Функциональный fftfilt
может быстро применить согласованную фильтрацию к функции.
n = fftfilt(fliplr(conj(pls)),rplsnoise); n_win = fftfilt(fliplr(conj(pls).*taylorwin(length(pls), 30)'),rplsnoise); clf plot(tt,abs(n),tt,abs(n_win)) xticks(lgs+T) xlabel('Time (s)') ylabel('Magnitude (L.U.)') legend('No Window', 'Hamming Window') title('Matched Filter Output')
Когда радарный импульс отражается от стационарной цели, импульс не модулируется и таким образом имеет большой ответ, когда переданная форма волны используется для согласованной фильтрации. Однако движущиеся цели отражают, что Доплер переключил импульсы, делая ответ из согласованной фильтрации менее сильным. Одно решение этого состоит в том, чтобы использовать банк согласованных фильтров с переключенными формами волны Доплера, которые могут использоваться, чтобы определить эффект Доплера отраженного импульса. Радиолокационная система может оценить целевую скорость, когда эффект Доплера пропорционален скорости.
Чтобы показать Доплеру, обрабатывающему использование банка согласованных фильтров, создайте ответ, который является Доплером, переключенным 5
Гц.
pls = chirp(t,0,T,f0, 'complex'); shift = 5; pls_shift = chirp(t,shift,T,f0+shift,'complex'); rpls_shift = pulstran(tt,[lgs;ref*att.^-(lgs-t0)]',pls_shift,fs); r = (randn(size(tt)) + 1j*randn(size(tt)))*std(pls)/db2mag(SNR); rplsnoise_shift = r + rpls_shift;
Создайте банк переключенных импульсов Доплера и наблюдайте различие в ответ для каждого согласованного фильтра.
filters = []; for foffset = 0:4:10 filters = [filters; chirp(t,0+foffset,T,f0+foffset,'complex')]; end
Графический вывод частотного диапазона исходного импульса и нового импульса показывает, что новый импульс возмещен 5
Гц.
clf pspectrum([pls; pls_shift].',fs) xlim([-100 100])
Примените каждый согласованный фильтр к переключенному частотой импульсу и постройте выход.
matched_pls = fftfilt(fliplr(conj(pls_shift)),rplsnoise_shift); filt_bank_pulses = fftfilt(fliplr(filters)',rplsnoise_shift); clf subplot(2,1,1) plot(tt,abs(matched_pls),'Color',[0.6350, 0.0780, 0.1840]) title('Matched Filter (5 Hz)') ylabel('Magnitude (L.U.)') xticks(lgs+T) subplot(2,1,2) plot(tt, abs(filt_bank_pulses)) legend("0 Hz", "4 Hz", "8 Hz") title('Matched Filter Bank') xlabel('Time (s)') ylabel('Magnitude (L.U.)')
График со всеми тремя выходными параметрами показывает, что согласованный фильтр, переключенный на 4 Гц, имеет самый большой ответ, таким образом, радиолокационная система аппроксимировала бы эффект Доплера, чтобы быть приблизительно 4 Гц. Используя большее количество Доплеровских фильтров с меньшим сдвигом частоты интервалы могут помочь улучшить Доплеровское разрешение.
Этот метод Доплера, обрабатывающего, часто не используется из-за более медленной природы применения многих фильтров. Большая часть обработки сигналов по радарным возвратам сделана с кубом данных, где три измерения являются быстрыми выборками времени (ответ области значений в импульсе), количество элементов массива и медленные выборки времени (количество импульсов). После того, как система определяет область значений объекта, преобразование Фурье сделано через медленное измерение времени, чтобы определить Доплера цели. Для этой настройки метод куба данных не был бы идеален для Доплера, обрабатывающего, поскольку система передает только один импульс. Метод куба данных работает лучше всего, когда у вас есть многочисленные импульсы, который является, почему много радиолокационных систем используют последовательность импульсов или серию импульсов, а не одного импульса для Доплера области значений, обрабатывающего.