IIR濾波器零相位數字濾波實現及應用
采用窗函數(Hanning窗)法設計出某200階FIR低通濾波器,截止頻率為200Hz,分析頻率為2KHz,其幅頻曲線及相頻曲線如圖3所示。
圖3低通濾波器的幅頻特性和相頻特性
利用該FIR低通數字濾波器對圖2所示發(fā)動機噪聲信號進行差分濾波,濾波后的波形如圖4所示
圖4差分濾波后的發(fā)動機噪聲信號
對比圖3和圖4所示波形可以看出,差分濾波后,信號變得光滑了許多,原來的毛刺被濾掉 了。但同時也可以看出差分濾波方法存在兩個問題:一是濾波后的信號相對與原信號而言,發(fā)生了相移;二是濾波后的信號在起始部分,波形畸變較為嚴重。在信號 處理中,如果對信號的相位有特殊的要求,相移問題需要引起高度的注意。而起始部分的畸變是由于疊代過程中,沒有考慮濾波器的初始條件,剛開始點數少,沒能 用到濾波器全部系數的緣故。大多情況下,這種畸變可以接受,但當數據較短,而濾波器的階數又較高時,這種畸變會帶來較大的負面影響。
如果輸入信號為一單位脈沖信號,即
x(n)=1,n=1
0,n≠1
那么,濾波器的輸出為其脈沖響應。本文所用200階FIR低通數字濾波器的脈沖響應如圖5所示。
為了克服差分數字濾波中存在的上述兩個問題,可以采用一種零相位濾波的方法,該方法的基本思路 是:先確定出濾波器的初始條件,然后將原序列的首尾進行擴展,把擴展后序列通過濾波器,將所得結果反轉后再次通過濾波器,最后將所得結果再反轉,并去掉首 尾的擴展部分,即可得到零相位濾波后的輸出序列。本文采用四次差分濾波方式給出一種便于實現的詳細算法,假設輸入信號為x(n),n=0,1,…,P.
(1) 編寫差分濾波函數DiffFilter(b,a,x),調用參數如前所述。
(2) 對于IIR濾波器通常有M=N,求濾波器的初始條件e(q),q=0,1,…,N-1,這里記E=[e(0),e(1),…,e(N-1)]T,則有
E=1+a(1)1-1…0
a(2)01…0
MMMOM
a(N)00…-11× b(1)-b(0)a(0)
b(2)-b(0)a(1)
M
b(Nn)-b(0)a(N)(3)
(3) 對原輸入序列x(n)的首尾進行擴展,在x(n)的前面添加3N個數,在后面添加3N個數,擴展后的序列記為x′(n),n=0,1,…,P+6N.
x′(n)=2x(0)-x(3N-n)
x(n-3N)
2x(P)-x(P-1-(n-P-3N-n))
n3N
3NnP+3N
P+3NnP+6N(4)
(4) 進行正向濾波:先用b,a和x′(n)調用DiffFilter(b,a,x)函數,計算x′(n)通過
H(z)=∑Mm=0b(m)z-m/(1+∑Mm=1a(m)z-m)(5)
的輸出y′(n),然后生成一長度為P+6N+1的單位脈沖信號h(n),用z,a和h(n)調用DiffFilter(b,a,x)函數,計算h(n)通過
H(z)=∑M-1m=0y′(0)e(m)z-m/(1+∑Mm=1a(m)z-m)(6)
的輸出y′(n),并記y(n)=y′(n)+y″(n)。
數字濾波器相關文章:數字濾波器原理
評論