基于MATLAB在IIR濾波器的設(shè)計(jì)與仿真
1 引言
在現(xiàn)代通信系統(tǒng)中,由于信號(hào)中經(jīng)?;煊懈鞣N復(fù)雜成分,所以很多信號(hào)的處理和分析都是基于濾波器而進(jìn)行的。但是,傳統(tǒng)的數(shù)字濾波器的設(shè)計(jì)使用繁瑣的公式計(jì)算,改變參數(shù)后需要重新計(jì)算,從而在設(shè)計(jì)濾波器尤其是高階濾波器時(shí)工作量很大。利用MATLAB信號(hào)處理箱(Signal Processing Toolbox)可以快速有效地實(shí)現(xiàn)數(shù)字濾波器的設(shè)計(jì)與仿真。
2 數(shù)字濾波器及傳統(tǒng)設(shè)計(jì)方法
數(shù)字濾波器可以理解為是一個(gè)計(jì)算程序或算法,將代表輸入信號(hào)的數(shù)字時(shí)間序列轉(zhuǎn)化為代表輸出信號(hào)的數(shù)字時(shí)間序列,并在轉(zhuǎn)化過(guò)程中,使信號(hào)按預(yù)定的形式變化。數(shù)字濾波器有多種分類(lèi),根據(jù)數(shù)字濾波器沖激響應(yīng)的時(shí)域特征,可將數(shù)字濾波器分為兩種,即無(wú)限長(zhǎng)沖激響應(yīng)(IIR)濾波器和有限長(zhǎng)沖激響應(yīng)(FIR)濾波器。
IIR數(shù)字濾波器具有無(wú)限寬的沖激響應(yīng),與模擬濾波器相匹配,所以IIR濾波器的設(shè)計(jì)可以采取在模擬濾波器設(shè)計(jì)的基礎(chǔ)上進(jìn)一步變換的方法。其設(shè)計(jì)方法主要有經(jīng)典設(shè)計(jì)法、直接設(shè)計(jì)法和最大平滑濾波器設(shè)計(jì)法。FIR數(shù)字濾波器的單位脈沖響應(yīng)是有限長(zhǎng)序列。它的設(shè)計(jì)問(wèn)題實(shí)質(zhì)上是確定能滿(mǎn)足所要求的轉(zhuǎn)移序列或脈沖響應(yīng)的常數(shù)問(wèn)題,設(shè)計(jì)方法主要有窗函數(shù)法、頻率采樣法和等波紋最佳逼近法等。
在對(duì)濾波器實(shí)際設(shè)計(jì)時(shí),整個(gè)過(guò)程的運(yùn)算量是很大的。設(shè)計(jì)階數(shù)較高的IIR濾波器時(shí),計(jì)算量更大,設(shè)計(jì)過(guò)程中改變參數(shù)或?yàn)V波器類(lèi)型時(shí)都要重新計(jì)算。
設(shè)計(jì)完成后對(duì)已設(shè)計(jì)的濾波器的頻率響應(yīng)要進(jìn)行校核。要得到幅頻、相頻響應(yīng)特性,運(yùn)算量也是很大的。平時(shí)所要設(shè)計(jì)的數(shù)字濾波器,階數(shù)和類(lèi)型并不一定是完全給定的,很多時(shí)候要根據(jù)設(shè)計(jì)要求和濾波效果不斷地調(diào)整,以達(dá)到設(shè)計(jì)的最優(yōu)化。在這種情況下,濾波器設(shè)計(jì)就要進(jìn)行大量復(fù)雜的運(yùn)算,單純的靠公式計(jì)算和編制簡(jiǎn)單的程序很難在短時(shí)間內(nèi)完成。利用MATLAB強(qiáng)大的計(jì)算功能進(jìn)行計(jì)算機(jī)輔助設(shè)計(jì),可以快速有效地設(shè)計(jì)數(shù)字濾波器,大大地簡(jiǎn)化了計(jì)算量。
3 IIR濾波器的MATLAB設(shè)計(jì)
3.1 FDATool界面設(shè)計(jì)
3.1.1 FDATool的介紹
FDATool(Filter Design&Analysis Tool)是MATLAB信號(hào)處理工具箱里專(zhuān)用的濾波器設(shè)計(jì)分析工具,MATLAB 6.O以上的版本還專(zhuān)門(mén)增加了濾波器設(shè)計(jì)工具箱(Filter Design Toolbox)。FDATool可以設(shè)計(jì)幾乎所有的常規(guī)濾波器,包括FIR和IIR的各種設(shè)計(jì)方法。它操作簡(jiǎn)單,方便靈活。
FDATool。界面總共分兩大部分,一部分是Design Filter。在界面的下半部,用來(lái)設(shè)置濾波器的設(shè)計(jì)參數(shù);另一部分則是特性區(qū),在界面的上半部分,用來(lái)顯示濾波器的各種特性。Design Filter部分主要分為:Filter Type(濾波器類(lèi)型)選項(xiàng),包括Lowpass(低通)、Highpass(高通)、Bandpass(帶通)、Bandstop(帶阻)和特殊的 FIR濾波器。
Design Method(設(shè)計(jì)方法)選項(xiàng),包括IIR濾波器的Butterwotth(巴特沃思)法、Chebyshev Type I(切比雪夫I型)法、Chebyshev Type II(切比雪夫II型)法、Elliptic(橢圓濾波器)法和FIR濾波器的Equiripple法、Least-Squares(最小乘方)法、 Window(窗函數(shù))法。
Filter Order(濾波器階數(shù))選項(xiàng),定義濾波器的階數(shù),包括Specify Order(指定階數(shù))和Minimum Order(最小階數(shù))。在Specify Order中填入所要設(shè)計(jì)的濾波器的階數(shù)(N階濾波器,Specify Order="N-1")。如果選擇Minimum Order,則MATLAB根據(jù)所選擇的濾波器類(lèi)型自動(dòng)使用最小階數(shù)。
Frequency Specifications選項(xiàng),可以詳細(xì)定義頻帶的各參數(shù),包括采樣頻率和頻帶的截止頻率。它的具體選項(xiàng)由Filter Type選項(xiàng)和Design Method選項(xiàng)決定。例如Bandpass(帶通)濾波器需要定義Fstop1(下阻帶截止頻率)、Fpass1(通帶下限截止頻率)、Fpass2 (通帶上限截止頻率)、Fstop2(上阻帶截止頻率),而Lowpass(低通)濾波器只需要定義Fstop1、Fpass1。采用窗函數(shù)設(shè)計(jì)濾波器時(shí),由于過(guò)渡帶是由窗函數(shù)的類(lèi)型和階數(shù)所決定,所以只需定義通帶截止頻率,而不必定義阻帶參數(shù)。
Magnitude Specifications選項(xiàng),可以定義幅值衰減的情況。例如設(shè)計(jì)帶通濾波器時(shí),可以定義Wstop1(頻率Fstop1處的幅值衰減)、Wpass (通帶范圍內(nèi)的幅值衰減)、Wstop2(頻率Fstop2處的幅值衰減)。當(dāng)采用窗函數(shù)設(shè)計(jì)時(shí),通帶截止頻率處的幅值衰減固定為6db,所以不必定義。
Window Specifications選項(xiàng),當(dāng)選取采用窗函數(shù)設(shè)計(jì),該選項(xiàng)可定義,它包含了各種窗函數(shù)。
3.1.2 IIR濾波器設(shè)計(jì)實(shí)例
本文以一個(gè)IIR濾波器的設(shè)計(jì)為例說(shuō)明如何使用MATLAB設(shè)計(jì)數(shù)字濾波器。要求設(shè)計(jì)一個(gè)10階的帶通Chebyshev I濾波器,它的通帶范圍是100到200Hz,采樣頻率為1000Hz,Rp=0.5。
本例中,首先在Filter Type中選擇Bandpass(帶通濾波器);在Design Method選項(xiàng)中選擇IIR,接著在相鄰的右則選項(xiàng)中選擇Chebyshev I(切比雪夫I型);指定Filter Order項(xiàng)中的Specify Order="10";由于采用的是切比雪夫設(shè)計(jì),不必在Options中選擇;然后在Frequency Specifications中選擇Unit為Hz,給出采樣頻率Fs=1000,通帶Fpass1=100和Fpass2=200;最后在 Magnitude Specifications中 選擇Unit為db,Apass=0.5。設(shè)置完成后點(diǎn)擊Design Filter即可得到所設(shè)計(jì)的IIR濾波器。通過(guò)菜單選項(xiàng)Analysis可以在特性區(qū)看到所設(shè)計(jì)的幅頻響應(yīng)、相頻響應(yīng)、沖擊響應(yīng)和零極點(diǎn)配置等特性,如圖1所示。設(shè)計(jì)完成后將結(jié)果保存為filterl.fda文件。
圖1濾波器的幅頻、相頻和沖激響應(yīng)(特性區(qū))
3.2 程序設(shè)計(jì)法
在MATLAB環(huán)境下運(yùn)行該程序即可得到濾波器的時(shí)域沖激響應(yīng)。由于篇幅所限,這里不再詳述源程序。 在MATLAB中,對(duì)各種濾波器的設(shè)計(jì)都有相應(yīng)的計(jì)算振幅、相位和沖激響應(yīng)的函數(shù),可以用來(lái)做濾波器程序設(shè)計(jì)。上例的IIR濾波器的沖激響應(yīng)可用程序設(shè)計(jì)如下:
n=10; %階數(shù)為10
Rp=0.5; %幅值衰減為0.5
Wn[100 200]/500;
[b,a]=chebyl(n,Rp,wn);
[y,t]impz(b,a,101);
stem(t,y,'.');
3.3設(shè)計(jì)實(shí)例分析
由圖1(a)可知,這種濾波器在100-200Hz的通帶范圍內(nèi)是等波紋的,而在阻帶中是單調(diào)的,這是Chebyshev I濾波器的幅頻特性。由圖1(b)可知,在100-200Hz的范圍內(nèi)相移較小,其曲線近似一條直線,失真較小;當(dāng)頻率超過(guò)這一范圍時(shí),相移較大,而且其曲線是非直線的,所以失真也較大。圖1(c)得到了Chebyshev I濾波器的時(shí)域沖激響應(yīng),在5ms-100ms有沖激響應(yīng),超過(guò)這一范圍的沖激響應(yīng)近似為零,進(jìn)而實(shí)現(xiàn)了Chebyshev I帶通濾波器的設(shè)計(jì)。
4 Simulink仿真
4.1 Simulink仿真實(shí)例
通過(guò)調(diào)用Simulink中的功能模塊,可以構(gòu)成數(shù)字濾波器的仿真框圖。在仿真過(guò)程中,雙擊各功能模塊,隨時(shí)改變參數(shù),獲得不同狀態(tài)下的仿真結(jié)果。例如原始信號(hào)x(t)=2sin(0.05wt)+w(t),w(t)為隨機(jī)信號(hào),幅值為0.2,通過(guò)一傳遞函數(shù)為H(z)=0.15/(1-0.8z-1)的濾波器可得到如圖2的仿真結(jié)果。其中仿真過(guò)程中可導(dǎo)入FDATool所設(shè)計(jì)的濾波器文件。
4.2 仿真分析
比較圖2中(b)和(c)的波形可知,輸入的原始信號(hào)經(jīng)過(guò)濾波器濾波后,(b)中波形的毛刺部分(即干擾噪聲)被濾除,輸出的信號(hào)更接近正弦波,如(c)中所示波形。由此說(shuō)明,傳遞函數(shù)為H(z)=0.15/(1-0.8z-1)的濾波器的設(shè)計(jì)是恰當(dāng)?shù)摹?/p>
5 結(jié)論
利用MATLAB的強(qiáng)大運(yùn)算功能,基于MATLAB的信號(hào)處理工具箱(Signal Processing Toolbox)的數(shù)字濾波器設(shè)計(jì)法可以快速有效地設(shè)計(jì)由軟件組成的常規(guī)數(shù)字濾波器,設(shè)計(jì)方便、快捷,大大減輕了工作量。在設(shè)計(jì)過(guò)程中可以對(duì)比濾波器特性。隨時(shí)更改參數(shù),以達(dá)到濾波器設(shè)計(jì)的最優(yōu)化。利用MATLAB設(shè)計(jì)數(shù)字濾波器在數(shù)字通信系統(tǒng)和計(jì)算機(jī)領(lǐng)域信號(hào)處理中,有著廣泛的應(yīng)用前景。