- 基于Matlab的FIR數(shù)字濾波器設(shè)計(jì)
- 數(shù)字濾波器及設(shè)計(jì)
- 使用Matlab信號處理工具箱提供的函數(shù)
- 窗函數(shù)法設(shè)計(jì)FIR濾波器方案
- FDATool的設(shè)計(jì)
提出FIR敷字濾波器的設(shè)計(jì)方案,并基于Matlab實(shí)現(xiàn)濾波仿真。通過使用Matlab信號處理工具箱提供的函數(shù),選擇適當(dāng)?shù)拇昂瘮?shù)編寫程序,其中窗函數(shù)按照實(shí)際信號的處理需求,參數(shù)折中選擇。實(shí)驗(yàn)獲得了比較理想的濾波器特性,可以實(shí)現(xiàn)較好的濾波作用。而且在實(shí)際應(yīng)用中只需按需求修改濾波器參數(shù),并結(jié)合程序的相應(yīng)改動,即可實(shí)現(xiàn)不同功能的濾波器。另外,介紹了利用FDATool設(shè)計(jì)濾波器的方法,簡單修改參數(shù)即可實(shí)現(xiàn)多種濾波器。
數(shù)字濾波器可以過濾時(shí)間離散信號,通過對抽樣數(shù)據(jù)進(jìn)行數(shù)字處理來達(dá)到頻域?yàn)V波的目的,目前已經(jīng)廣泛應(yīng)用在高保真的信號處理,如數(shù)字音頻、圖像處理、數(shù)據(jù)傳輸、生物醫(yī)學(xué)等領(lǐng)域。由于計(jì)算機(jī)技術(shù)和大規(guī)模集成電路的發(fā)展,數(shù)字濾波器已可用計(jì)算機(jī)軟件實(shí)現(xiàn)。借助Mathb強(qiáng)大的數(shù)據(jù)處理能力,靈活使用模塊集和工具箱,可以按照需求編寫程序來實(shí)現(xiàn)多種濾波器設(shè)計(jì)。伴隨Matlab的不斷發(fā)展以及工具箱的不斷開發(fā),工作平臺的改善,使用Mathb的編程工作量會大大減少。Matlab提供了完整的聯(lián)機(jī)查詢、幫助系統(tǒng),提供了比較完備的調(diào)試系統(tǒng),程序不必經(jīng)過編譯就可以直接運(yùn)行,而且能夠及時(shí)地報(bào)告出現(xiàn)的錯(cuò)誤及進(jìn)行出錯(cuò)原因分析。而這也使得基于Matlab的設(shè)計(jì)變得方便易于使用。
1 數(shù)字濾波器及設(shè)計(jì)方案
應(yīng)用數(shù)字濾波器處理模擬信號時(shí),首先要對輸入模擬信號進(jìn)行限帶、抽樣和模/數(shù)轉(zhuǎn)換,數(shù)字濾波器輸入信號的抽樣率應(yīng)大于被處理信號帶竟的兩倍,其頻率響應(yīng)具有以抽樣頻率為間隔的周期重復(fù)特性,且以折疊頻率即1/2抽樣頻率點(diǎn)呈鏡像對稱。濾波器的輸出信號須經(jīng)數(shù)/模轉(zhuǎn)換、平滑處理。
FIR數(shù)字濾波器的輸出值u(Kt)與輸出的過去值u(Kt-kt)表達(dá)關(guān)系如下:
這是不斷乘累加的過程,解決了濾波器的系數(shù)α問題,再加上乘法和加法計(jì)算即可實(shí)現(xiàn)濾波器設(shè)計(jì)。由于FIR濾波器的單位脈沖響應(yīng)h(n)是有限長序列,因此濾波器沒有不穩(wěn)定的問題,F(xiàn)IR濾波器一般為非遞歸結(jié)構(gòu),因此在采用Matlab設(shè)計(jì)時(shí)采用有限精度的計(jì)算,以避免出現(xiàn)遞歸結(jié)構(gòu)中極性震蕩等不穩(wěn)定現(xiàn)象。常見的兩種FIR濾波器設(shè)計(jì)方法是窗函數(shù)法和頻率采樣法。雖然頻率采樣法可以精確控制采樣點(diǎn)的頻率響應(yīng),但是設(shè)計(jì)中必須插入過渡點(diǎn)來改善紋波,而且截止頻率不易控制,過渡點(diǎn)也需要進(jìn)一步的優(yōu)化,對比來看窗函數(shù)法則是一種基本的設(shè)計(jì)理念,設(shè)計(jì)方法比較成熟。并且Matlab中提供的函數(shù)可以方便地實(shí)現(xiàn)加窗線性相位FIR濾波器設(shè)計(jì),包括了比較常見的低通、帶通、高通和帶阻數(shù)字濾波器。本文采用的是窗函數(shù)結(jié)合編程的設(shè)計(jì)方法。
窗函數(shù)法的基本思想是先給定理想的濾波器頻響為, 式中:ωc為截止頻率;α為采樣延遲。
而所要求設(shè)計(jì)的頻響為,之后的工作便是使逼近。加窗w(n)對理想濾波器的單位抽樣響應(yīng)hd(n)(見式(3))截?cái)?,得到所要設(shè)計(jì)的h(n)。
對于FDATool設(shè)計(jì)法,本文通過選擇適當(dāng)參數(shù),利用Matlab完成。
[page]
2 FIR數(shù)字濾波器設(shè)計(jì)
2.1 窗函數(shù)法設(shè)計(jì)FIR濾波器方案
在Matlab中可直接產(chǎn)生窗函數(shù):矩形窗(Rectangle Window),三角窗(Triangular Window),漢寧窗(Hanging Window),凱塞窗(Kaiser Window)等,通過調(diào)用系統(tǒng)的函數(shù)即可實(shí)現(xiàn)窗的加載。具體調(diào)用方法如下:調(diào)用格式:w=函數(shù)名(n),根據(jù)長度n產(chǎn)生一個(gè)矩形窗w。一般正常的心電信號頻率范圍在0.05~100 Hz之內(nèi),這本身就是一種比較微弱的電信號,當(dāng)受到身體其他器官的干擾信號后,心電信號將會嚴(yán)重失真。另外還要考慮到電子器件噪聲和50 Hz的工頻信號的存在。這就需要盡量消除噪聲和干擾的影響。這里選取低通濾波器的設(shè)計(jì)指標(biāo)為:通帶截止頻率ωp=0.2π,阻帶截止頻率ωs=0.3π,最小阻帶衰減As≥50 dB。所以得出過渡帶寬tr_width=ωs-ωp,列長N=10 π/tr_width。選擇窗函數(shù)一般是選擇主瓣較寬的,這樣可以增加阻帶的衰減,保證了通帶的平穩(wěn),另外在保證阻帶最小衰減指標(biāo)的情況下,適當(dāng)增加列長N值,窄化過渡帶。根據(jù)窗函數(shù)最小阻帶衰減的特性。只有海明窗和凱塞窗可提供大于50 dB的衰減。實(shí)際應(yīng)用中選用窗函數(shù)大多是它們的折中,凱塞窗可以通過改變參數(shù)值來折中選擇主瓣寬度和旁瓣衰減,基于此的濾波器適應(yīng)能力強(qiáng)且比較靈活。本文即是采用的凱塞窗編程設(shè)計(jì)。窗函數(shù)設(shè)計(jì)法是用一定寬度窗函數(shù)截取無限脈沖響應(yīng)序列獲得有限長的脈沖響應(yīng)序列,設(shè)計(jì)步驟為:
(1)通過傅里葉逆變換獲得理想濾波器的單位脈沖響應(yīng)hd(n)。
(2)由性能指標(biāo)確定窗函數(shù)W(n)和窗口長度N。
(3)求得實(shí)際濾波器的單位脈沖響應(yīng)h(n),h(n)即為所設(shè)計(jì)FIR濾波器系數(shù)向量a(n)。
(4)檢驗(yàn)濾波器性能。
Matlab信號處理工具箱提供了各種窗函數(shù)、濾波器設(shè)計(jì)函數(shù)和濾波器實(shí)現(xiàn)函數(shù)。設(shè)計(jì)中利用Matlab提供的函數(shù)firl來實(shí)現(xiàn),編程則是直接調(diào)用這些函數(shù)簡單直觀的完成設(shè)計(jì)。調(diào)用格式:firl(n,Wn,‘ftype’,Window),其中n為階數(shù)、Wn為截止頻率、ftype是濾波器的類型、Window是窗函數(shù)。應(yīng)用凱塞窗的代碼如下:
從濾波效果圖看,所設(shè)計(jì)的濾波器基本消除了噪聲和干擾的影響,客觀的得出真實(shí)信號。按照設(shè)計(jì)方案中濾波器的指標(biāo),執(zhí)行函數(shù)操作可以得到:N=68,As=59。之后增加參數(shù)N值。在該設(shè)計(jì)中,利用凱塞窗函數(shù),執(zhí)行了多種N值的改變。伴隨N值增大,過渡帶變窄,但阻帶的最小衰減沒有改變。
2.2 FDATool設(shè)計(jì)方案
FDATool(Filter Design&Analysis Too1)是Matlab信號處理工具箱專用的濾波器設(shè)計(jì)分析工具,操作簡單、靈活,可以采用多種方法設(shè)計(jì)FIR濾波器。這種方法設(shè)計(jì)的數(shù)字濾波器,可以隨時(shí)調(diào)整濾波器濾披特性,而且濾波結(jié)果實(shí)時(shí)顯示在圖形區(qū),減少了工作量,有利于濾波器設(shè)計(jì)的進(jìn)一步優(yōu)化。在Matlab命令窗口輸入FDATool后回車會彈出FDATool界面,也可在Matlab主界面下方選擇“start”→“toolbox”→“ filterdesign”。具體參數(shù)選擇為:
(1)濾波器類型(filter type)為lowpass;
(2)設(shè)計(jì)方法(design method)為FIR,使用窗口Window;
(3)濾波器的階數(shù)(fiter order)為15;
(4)窗口類型(Window)為Kaiser,beta為0.5;
(5)fs為48 000 Hz,fc為10 800 Hz。
[page]
點(diǎn)擊“design filter”即可。值得注意的是,這里選擇filter order為15階,而不是所設(shè)計(jì)的16階濾波器。因?yàn)槌?shù)系數(shù)項(xiàng)h(0)=0。通過菜單“analysis”選擇“magnitude”和“phase response”即可得到圖3,圖4的特性顯示。“analysis”選擇“step response”和“im-pulse”可以得到圖5,圖6的響應(yīng)顯示??梢钥闯鏊O(shè)計(jì)FIR濾波器的階躍響應(yīng)和沖擊響應(yīng)比較接近理想狀態(tài)。
3 結(jié)論
從圖1~4的特性曲線中可以看出該濾波器的性能基本達(dá)到了妻求,濾波作用比較明顯。曲線相對比較平穩(wěn),能夠滿足微弱信號濾波器的設(shè)計(jì)技術(shù)指標(biāo)。特別是從方案二中的相頻特性曲線來看,曲線通過原點(diǎn)且為一條平滑直線,說明具有良好的線性相位特性,而這也是在應(yīng)用中選擇FIR數(shù)字濾波器的重要原因,但是它的實(shí)際效果還要經(jīng)過實(shí)踐的檢驗(yàn)。FIR幅頻特性精度比IIR低,且濾波器所需階次比較高,但是它擁有很好的線性相位,即不同頻率分量的信號經(jīng)過FIR濾波器后他們的時(shí)問差不變。另外,F(xiàn)IR還存在的缺點(diǎn)應(yīng)加以改善,如信號的延遲偏大。這就考慮到用高性能的DSP器件,由于其處理速度快,此缺點(diǎn)在一點(diǎn)程度上是可以改善的。
4 結(jié)語
本文通過設(shè)計(jì)實(shí)例,介紹了利用Matlab實(shí)現(xiàn)數(shù)字信號處理中的數(shù)字濾波器設(shè)計(jì),從結(jié)果可以看出它們均可以達(dá)到技術(shù)指標(biāo)要求,而且方法簡單、快捷,大大減輕了工作量。濾波器的設(shè)計(jì)工作完成后,可以借助Matlah的export操作導(dǎo)出所設(shè)計(jì)濾波器的系統(tǒng)函數(shù)H(x)。由于Matl-ah具有強(qiáng)大的接口功能,仿真后的結(jié)果可以很方便的移植到DSP,CPLD或FPGA等器件中。在實(shí)際應(yīng)用中,只需按要求修改濾波器參數(shù),并對程序作較少的改動,即可實(shí)現(xiàn)不同的濾波器,實(shí)用性較強(qiáng)。