站長工具seo綜合查詢排名怎么做關(guān)鍵詞排名靠前
補償 FIR 濾波器引入的延遲
對信號進行濾波會引入延遲。這意味著相對于輸入,輸出信號在時間上有所偏移。此示例向您說明如何抵消這種影響。
有限沖激響應(yīng)濾波器經(jīng)常將所有頻率分量延遲相同的時間量。這樣,我們就很容易通過對信號進行時移處理來針對延遲進行校正。
以 500 Hz 的頻率對心電圖讀數(shù)采樣,采樣時間為 1 秒。添加隨機噪聲。重置隨機數(shù)生成器以獲得可再現(xiàn)性。
Fs = 500;
N = 500;
rng defaultxn = ecg(N)+0.25*randn([1 N]);
tn = (0:N-1)/Fs;
使用濾波器阻擋 75 Hz 以上的頻率,以消除一部分噪聲。使用?designfilt
?設(shè)計一個階數(shù)為 70 的濾波器。
nfilt = 70;
Fst = 75;d = designfilt('lowpassfir','FilterOrder',nfilt, ...'CutoffFrequency',Fst,'SampleRate',Fs);
對信號進行濾波并繪圖。與原始信號相比,結(jié)果更平滑,但存在滯后。
xf = filter(d,xn);plot(tn,xn)
hold on, plot(tn,xf,'-r','linewidth',1.5), hold off
title 'Electrocardiogram'
xlabel 'Time (s)', legend('Original Signal','Filtered Signal')
使用?grpdelay
?檢查濾波器造成的延遲是否等于濾波器階數(shù)的一半。
grpdelay(d,N,Fs)
delay = mean(grpdelay(d))
delay = 35
對濾波后的信號進行時移以對齊數(shù)據(jù)。刪除信號的前?delay
?個采樣。刪除原始采樣和時間向量的最后?delay
?個采樣。
tt = tn(1:end-delay);
sn = xn(1:end-delay);sf = xf;
sf(1:delay) = [];
對信號繪圖,并驗證它們是否對齊。
plot(tt,sn)
hold on, plot(tt,sf,'-r','linewidth',1.5), hold off
title 'Electrocardiogram'
xlabel('Time (s)'), legend('Original Signal','Filtered Shifted Signal')
另請參閱
designfilt?|?filter?|?filtfilt?|?grpdelay
相關(guān)主題
- 補償 IIR 濾波器引入的延遲
- 數(shù)字濾波實踐介紹