濾波器原理_用Matlab的FDAtool生成IIR濾波器參數(shù)
本文關(guān)鍵詞:濾波器,由筆耕文化傳播整理發(fā)布。
MATLAB IIR數(shù)字濾波器設(shè)計
首先我們要明白相關(guān)的概念。
數(shù)字濾波器設(shè)計采用角頻率,如何與實際信號頻率對應(yīng)?
角頻率w,采樣頻率fs ,實際信號頻率f的轉(zhuǎn)換關(guān)系為:
W = 2*pi* f / fs
采樣頻率的角頻率為 2 *pi.
數(shù)字濾波器的指標(biāo),以低通為例【見下圖】:
當(dāng)我們設(shè)計的濾波器是帶通的時候。其通帶截止頻率有兩個,阻帶截止頻率也有兩個。截止頻率還有另外一個稱謂,即邊沿頻率。
FIR 濾波器可以設(shè)計為線性相位,,并且總是穩(wěn)定的。在多數(shù)情況下,F(xiàn)IR濾波器的階數(shù) NFIR 顯著大于具有等效幅度響應(yīng)的IIR濾波器階數(shù)NIIR。NFIR/NIIR 通常為10的量級或更高. IIR 濾波器通常計算更簡便。 在很多應(yīng)用中,并不要求濾波器具有嚴(yán)格的線性相位,在這些情況下,通常會因計算簡便而選擇IIR濾波器。例如在很多語音編碼當(dāng)中的濾波器很多都是IIR濾波器,均衡器一般也用IIR濾波器。也就是說對實時性要求不是很高的場合可以考慮使用FIR濾波器,當(dāng)FIR濾波器階數(shù)較長時,可以考慮用FFT去計算。
在設(shè)計IIR濾波器時,通常將數(shù)字濾波器的設(shè)計指標(biāo)轉(zhuǎn)化成模擬低通原型濾波器的設(shè)計指標(biāo),從而確定滿足這些指標(biāo)的模擬低通濾波器的傳輸函數(shù)Ha(s),然后再將它變換成所需要的數(shù)字濾波器傳輸函數(shù)G(z)。
上述濾波器設(shè)計的過程只需要了解其原理。借助于MATLAB強大的工具,濾波器的設(shè)計變得比較簡單了。
在MATLAB命令窗口中鍵入fdatool, 你將啟動濾波器設(shè)計的圖形界面。你可以從simulink中直接選擇數(shù)字濾波器控件而啟動。
本文主要講述IIR數(shù)字濾波器設(shè)計的方法。
對從麥克風(fēng)進來的信號濾波。
假定我們要把50hz的電頻干擾去掉,同時人說話的頻率一般不會超過3400hz。我們設(shè)計一個帶通濾波器,通帶為【80-3200】,采樣率為8k。
根據(jù)上面的需求,我們把相關(guān)的參數(shù)改成下面的界面:
單擊 Design Filter,數(shù)秒之后顯示如下:
可以看出:濾波器的階數(shù)是36,還有一個 sections: 18. 由于在具體實現(xiàn)時一般是以2階的級聯(lián)或并聯(lián)去實現(xiàn)的。所以實際上分為18個2階節(jié)去實現(xiàn)。
36階是系統(tǒng)計算出的滿足需求的最小階了。我們也可以自己事先制定階數(shù),參數(shù)如下:
這時,截止頻率衰減參數(shù)已經(jīng)沒法選了,被固定為3分貝:
最終計算的幅度響應(yīng)如下:
我們需要把設(shè)計的濾波器系數(shù)保存下來,以供其它程序調(diào)用。
MATLAB提供了直接導(dǎo)出系數(shù)的方法。
【targets】->【generate C header】
可以修改如下,選擇【Generate】
在MATLAB工作目錄下可以找到你生成的系數(shù)文件,大概是下面這個樣子的:
這個文件讓人看的不太懂。返回fdatool設(shè)計界面選擇【Analysis->Filter coeffcients】:
系數(shù)界面與這個文件里面的數(shù)據(jù)是一致的。
認(rèn)真觀察上面這個界面里的數(shù)據(jù),我們發(fā)現(xiàn),文件里面的系數(shù),實際上把它分成兩個2階節(jié)相乘的形式,其中還有增益。增益的目的是為了保證計算的精度和系統(tǒng)的穩(wěn)定性。
選擇【edit】->【convert to single section】,這時候系數(shù)變成我們熟悉的形式:
生成的系數(shù)C頭文件如下:
指定階數(shù)為2,重復(fù)上述步驟生成的IIR濾波器系數(shù)文件如下:
本文關(guān)鍵詞:濾波器,由筆耕文化傳播整理發(fā)布。
本文編號:211684
本文鏈接:http://www.sikaile.net/wenshubaike/xxkj/211684.html