距離 都卜勒譜 RD譜 之二 距離相關(匹配濾波)

2021-10-24 22:23:55 字數 3750 閱讀 7702

本篇文章主要針對匹配濾波的要點及注意事項進行闡述。

匹配濾波的公式:

其中,h(t)是匹配濾波器衝激響應,s(t)是參考訊號,x(t)是目標回波訊號。

從上述公式,可得到以下結論:

1、匹配濾波是目標回波訊號與匹配濾波器衝激響應的線性卷積,而匹配濾波器的衝激響應就是參考訊號的「共軛、翻轉」。因此,匹配濾波是目標回波與參考訊號「共軛、翻轉」的線性卷積。

2、匹配濾波是回波訊號與參考訊號共軛、翻轉的線性卷積,那麼就可以通過頻域快速演算法fft實現。但是應注意的是,fft對應的是「迴圈卷積」,需滿足一定條件才能使得fft快速演算法結果與時域線性卷積結果相同,該條件將在後文介紹。

3、從公式最右側的等式可知,匹配濾波又相當於目標回波訊號與參考訊號的互相關。(由於參考訊號與目標回波訊號基本一致,有些資料中也稱為自相關。)

在matlab中,與上述三個結論分別對應的函式分別為conv、fft+ifft、xcorr。事實上,conv與xcorr在演算法上等價,只差共軛、翻轉兩個步驟。

錯誤的開啟方式:如果採用下面的程式,結果很有可能讓你很困惑!!!

clear all;

close all;

clc;

%% 引數

fs = 48e3; % 取樣頻率

tp = (21 + 1/3) * 1e-3; % 脈衝寬度

tr = 4 * tp; % 脈衝重複週期

nr = round(tr * fs);

np = round(tp * fs);

fc = 5e3; % 載波頻率

gamma = 500e3; % 調頻斜率

%% 訊號

t = (0:np - 1) / fs; % 快時間

sref = [exp(1j * 2 * pi * (fc * t + 0.5 * gamma * t.^2)), zeros(1, nr - np)]; % 參考訊號/發射訊號

st = circshift(sref, 128);

figure;

plot(abs(fftshift(fft(st))));

figure;

plot(abs(st),'r');hold on;

%% 通道

st = awgn(st, 5);

plot(abs(st),'b');hold off;

%% 匹配濾波

out1 = xcorr(st, sref);

out1 = out1(nr: end); % 前nr - 1個資料與後nr - 1個資料關於nr對稱,為了與後面長度一致,刪去前面的重複資料

% 法二:卷積(時域)

out2 = conv(st, conj(fliplr(sref)));

out2 = out2(nr: end); % 同理

% 法三:fft(頻域)

可以發現,採用上述程式時,fft方法的結果與conv方法的結果在3500-4000點時出現了不同,對於實際資料,該差距可能更明顯。我將在展示正確的**之後,解釋原因。

正確的方法:如果理解下面這段程式,你將不再困惑~

clear all;

close all;

clc;

%% 引數

fs = 48e3; % 取樣頻率

tp = (21 + 1/3) * 1e-3; % 脈衝寬度

tr = 4 * tp; % 脈衝重複週期

nr = round(tr * fs);

np = round(tp * fs);

fc = 5e3; % 載波頻率

gamma = 500e3; % 調頻斜率

%% 訊號

t = (0:np - 1) / fs; % 快時間

sref = [exp(1j * 2 * pi * (fc * t + 0.5 * gamma * t.^2)), zeros(1, nr - np)]; % 參考訊號/發射訊號

st = circshift(sref, 128);

figure;

plot(abs(fftshift(fft(st))));

figure;

plot(abs(st),'r');hold on;

%% 通道

st = awgn(st, 5);

plot(abs(st),'b');hold off;

%% 匹配濾波

out1 = xcorr(st, sref);

out1 = out1(nr: end); % 前nr - 1個資料與後nr - 1個資料關於nr對稱,為了與後面長度一致,刪去前面的重複資料

% 法二:卷積(時域)

out2 = conv(st, conj(fliplr(sref)));

out2 = out2(nr: end); % 同理

% 法三:fft(頻域)

out3 = ifft(fft(st, 2 * nr - 1) .* fft(conj(fliplr(sref)), 2 * nr - 1)); % 這裡修改啦!!!!

out3 = out3(nr:end); % 這裡修改啦!!!!

可以看到,在3500-4000點的誤差已經完全被消除掉,這是因為滿足了「迴圈卷積」等效計算「線性卷積」的條件,即fft點數n>=n1 + n2 - 1。其中,n1、n2分別為兩個訊號刪去左右兩側零值後的長度。事實上,matlab中conv函式計算的是兩個序列的線性卷積,而fft則對應序列的迴圈卷積。迴圈卷積是將有限長的序列進行週期延拓,等效為週期序列,進行卷積計算的。網路上有許多人提問:「conv與fft結果為什麼不同?」,這就是根本的原因。在滿足下面的公式時,可以無誤差地用迴圈卷積計算線性卷積:

其中,n1、n2分別為兩個訊號刪去左右兩側零值後的長度。例如,x(t) = ,那麼n1 = 3。

具體推導有時間再寫文章說明【手動狗頭】。

[1]趙志欣. 高頻外輻射源雷達新體制與訊號處理若干關鍵技術研究[d].武漢大學,2013.

《書譜》之悟道

唐代的大書法家 書法理論家孫過庭在他的不朽之作 書譜 中把學書過程分為了三個階段 初學分布,但求平正 既知平正,務追險絕 既能險絕,復歸平正。古往今來的書法實踐證明,這確是一條真理,是常說的 先走進去再走出來 由生到熟再到生的過程,是一切書法愛好者達到成功境地的必經之路。第一階段是非常重要的打基礎的...

rv player 不靠譜之rvio

最近忽然發現為動畫組寫過的乙個maya內建工具不能用了,工具的作用是使用rvio hw.exe轉換playblast出的tif序列圖,生成帶watermark的mov檔案。之前在maya2013上一直用的好好地,在2014以及2015版本都不能使用了,而且報出的錯誤也是十分怪異 這是個什麼鬼!這是個...

社群發現之譜聚類演算法的實現

譜聚類演算法實現 1 計算距離矩陣 歐氏距離,作為相似度矩陣 2 利用knn計算鄰接矩陣a 3 由鄰接矩陣計算都矩陣d和拉普拉斯矩陣l 4 標準化拉普拉斯矩陣 5 對拉普拉斯矩陣進行特徵值分解得到特徵向量 6 對特徵向量進行k means聚類 7 得到分類結果 import numpy as np ...