使用窗函式的作用在於減少頻譜洩漏,由於在實際應用中,通常都是fir濾波器,這就不能使濾波器的係數達到sinc函式上的無限大的抽樣,從而實現在頻域的方波形狀的低通濾波,人們想到使用窗函式的方法對輸入的取樣點進行加窗處理。
常用的窗函式有漢寧窗,漢明窗,布萊克慢窗,凱澤窗等。它們的評價指標就在於過渡帶寬度,通帶紋波,主瓣與旁瓣比,阻帶衰減。
如果不加窗的話,就相當於加乙個矩形窗。
寫這個文章的原由是要解釋乙個疑問,用matlab得到的窗函式序列和書本上以及實際程式**裡的都有出入。
這裡就用漢寧窗來舉例吧。
在matlab裡輸入hanning(8)回車得到的是:
>> hanning(8)
ans =
0.1170
0.4132
0.7500
0.9698
0.9698
0.7500
0.4132
0.1170
你會發現上下對稱的結果。
關於窗函式的表示式,我在一本書上看到是這樣的w(n)=0.5[1-cos(2*pi*n/(n-1))], n = 0,1,...n-1.這樣計算出來的結果就是:
0.000000
0.188255
0.611260
0.950484
0.950484
0.611260
0.188255
0.000000
也是上下對稱的,這就把第乙個和最後乙個都去掉了,因為等於0
而我在程式**裡看到的卻是另一種表示式,即w(n)=0.5[1-cos(2*pi*n/n)], n = 0,1,...n-1.這樣計算出來的結果就是:
0.000000
0.146447
0.500000
0.853553
1.000000
0.853553
0.500000
0.146447
這個結果的上下都不對稱了。
問題來了,同乙個問題有三個不同的答案,究竟它們誰錯了,誰是對的,我考慮之後覺得他們都是對的,因為窗函式只是對輸出的頻譜的一種改善,當然這種改善也會付出代價,比如使頻率解析度降低。
那麼matlab使用的是什麼表示式呢,我猜出來的結果是w(n)=0.5[1-cos(2*pi*n/(n+1))], n = 1,2,...n.驗證後果然如此。可能是因為matlab要去掉那個首尾計算出來的零值才這麼做的吧。
在計算漢明窗的時候,matlab使用的表示式是和書上的一樣的,都是w(n)=0.54 - 0.46*cos(2*pi*n/(n-1)), n = 0,1,...n-1.
FIR濾波器設計
fir濾波器的優越性 相位對應為嚴格的線性,不存在延遲失真,僅僅有固定的時間延遲 因為不存在穩定性問題,設計相對簡單 僅僅包括實數演算法,不涉及複數演算法,不須要遞推運算,長度為m,階數為m 1,計算值約為m 2。關於fir濾波器的幅頻特性和相頻特性。在人們不關心相位時,能夠讓幅頻特性常為正,原來為...
FIR濾波器設計
該文件為了說明fir濾波器,iir濾波器的原理,數學含義,設計方法 一 原理 1 fir有限衝擊響應,iir無限衝擊響應。前者無反饋,只與當前和歷史輸入有關,後者有反饋,不僅與當前和歷史輸入有關,還與歷史輸出有關。fir輸出相位線性,設計簡單,但是階數更高 iir輸出相位不線性,設計困難,但相同效能...
FIR濾波器的設計
matlab可以使用fir1函式設計低通 高通 低通 帶通等具有嚴格線性相位特性的濾波器。fir1函式的幾種語法如下 b fir1 n,wn b fir1 n,wn,ftype b fir1 n,wn,ftype window b fir1 noscale 各個引數的含義 設計濾波器,採用漢明窗,長...