張學(xué)敏,劉奭昕,張建紅
(1.長(zhǎng)春工程學(xué)院電氣與信息學(xué)院,長(zhǎng)春130012;2.大連理工大學(xué)電子信息與電氣工程學(xué)部,大連116024)
數(shù)字濾波是數(shù)字信號(hào)處理的基本方法。與模擬濾波器相比有很多優(yōu)點(diǎn):數(shù)字濾波具有穩(wěn)定﹑適應(yīng)性強(qiáng)等特點(diǎn),從而避免了模擬濾波固有的電壓漂移、溫度漂移和噪聲等問(wèn)題。數(shù)字濾波包括無(wú)限長(zhǎng)IIR(Infinite Impulse Response)濾波器和有限長(zhǎng)FIR(Finite Impulse Response)濾波器。由于IIR濾波器傳遞函數(shù)的極點(diǎn)可位于單位圓內(nèi)的任何地方,因此可用較低的階數(shù)獲得高的選擇性,所用存儲(chǔ)單元少,經(jīng)濟(jì)且效率高。另外,IIR濾波器的設(shè)計(jì)通常是借助于模擬濾波器的成果,因此一般有有效的公式可供準(zhǔn)確計(jì)算,計(jì)算工作量較小,故本文僅討論IIR濾波器的設(shè)計(jì)。
Matlab是一種以矩陣運(yùn)算為基礎(chǔ)的功能強(qiáng)大的程序設(shè)計(jì)語(yǔ)言,它具有編程效率高﹑語(yǔ)句可讀性強(qiáng)﹑數(shù)值計(jì)算可視化的優(yōu)點(diǎn)?,F(xiàn)在利用Matlab語(yǔ)言設(shè)計(jì)的數(shù)字濾波器大多依賴語(yǔ)言本身來(lái)實(shí)現(xiàn)的,可重復(fù)性和可擴(kuò)展性差,無(wú)人機(jī)互動(dòng)性。鑒于此,本文提出一種基于Matlab圖形用戶界面的數(shù)字濾波器的設(shè)計(jì)方法,該方法既依賴語(yǔ)言本身,同時(shí)又具有圖形用戶界面的方便﹑直觀﹑人機(jī)交互性好的優(yōu)點(diǎn)。本文以Matlab 7.0為設(shè)計(jì)平臺(tái),進(jìn)行IIR濾波器的設(shè)計(jì)。
由于IIR數(shù)字濾波器的設(shè)計(jì)是利用模擬濾波器的成熟理論和設(shè)計(jì)方法來(lái)完成的,所以將模擬濾波器數(shù)字化后會(huì)產(chǎn)生頻譜混疊現(xiàn)象。為了克服這一缺點(diǎn),故采用非線性頻率壓縮方法,將整個(gè)頻率軸上的頻率范圍壓縮到±π/T之間,再用Z=esT轉(zhuǎn)換到Z平面上。設(shè)模擬濾波器的傳遞函數(shù)為H(s),s=jΩ經(jīng)非線性頻率壓縮后用 H(s1),s1=j Ω1表示,用正切變換實(shí)現(xiàn)頻率壓縮:
式(3)或式(4)稱為雙線性變換。IIR濾波器的設(shè)計(jì)關(guān)鍵是由其性能指標(biāo)計(jì)算濾波器系數(shù),利用Matlab信號(hào)處理工具箱中的elli函數(shù)可精確得到濾波器系數(shù),再利用頻率響應(yīng)函數(shù)freqz可以得到濾波器的幅頻響應(yīng)。下面利用ellip函數(shù)設(shè)計(jì)低通、高通和帶通濾波器。函數(shù)格式如下:
(1)低通濾波器設(shè)計(jì)函數(shù)[b,a]=ellip(N,Rp,Rs,ω),式中N為濾波器階數(shù),ω為歸一化截止頻率,0<ω<1,Rp為通帶最小衰減,Rs為阻帶最大衰減,返回值b,a為IIR濾波器系數(shù)。
(2)高通濾波器設(shè)計(jì)函數(shù):[b,a]=ellip(N,Rp,Rs,ω,′high′),式中 N 為濾波器階數(shù) ,ω為歸一化截止頻率,0<ω<1,Rp為通帶最小衰減,Rs為阻帶最大衰減,high代表濾波器類型是高通濾波器,返回值b,a為IIR濾波器系數(shù)。
(3)帶通濾波器設(shè)計(jì)函數(shù):[b,a]=ellip(N,Rp,Rs,[ω1 ω2 ]),式中N 為濾波器階數(shù),ω為歸一化截止頻率,和ω2分別為帶通濾波器的通帶上限和下限截止頻率,Rp為通帶最小衰減,Rs為阻帶最大衰減,返回值b,a為IIR濾波器系數(shù)。
圖形用戶界面(即Graphic User Interface,以下簡(jiǎn)稱GUI)是Matlab的用戶與計(jì)算機(jī)之間通信聯(lián)系的平臺(tái)。使用GUI應(yīng)用程序,用戶可以方便地通過(guò)鼠標(biāo)與程序進(jìn)行信息交互,控制程序運(yùn)行。Matlab作為功能強(qiáng)大的軟件開發(fā)工具,提供了豐富的GUI設(shè)計(jì)功能,特別是Matlab7.0所提供的控制種類更豐富,使用更方便,用戶利用Matlab提供的圖形用戶界面設(shè)計(jì)工具,可以設(shè)計(jì)各種要求的GUI,并在其基礎(chǔ)上完成應(yīng)用程序的開發(fā)。
該圖形用戶界面共創(chuàng)建21個(gè)控件:8個(gè)靜態(tài)文本框及與之相對(duì)應(yīng)的8個(gè)動(dòng)態(tài)文本框,8個(gè)靜態(tài)文本框的內(nèi)容分別是頻率1﹑頻率2﹑頻率3﹑采樣頻率、時(shí)間t﹑階數(shù)、截止頻率1﹑截止頻率2(若是高通濾波器,截止頻率1代表其截止頻率;若是低通濾波器,截止頻率2代表其截止頻率;若是帶通濾波器,截止頻率1和截至頻率2代表其上﹑下限截止頻率),動(dòng)態(tài)文本框用來(lái)輸入與靜態(tài)文本框內(nèi)容相對(duì)應(yīng)的可編輯的參數(shù);1個(gè)彈出式菜單,彈出式菜單中設(shè)置了帶通(bandpass)﹑低通(lowpass)﹑高通(highpass)3個(gè)選項(xiàng),用戶在動(dòng)態(tài)文本框中鍵入數(shù)據(jù)后,點(diǎn)擊相應(yīng)的選項(xiàng),即可得到其所對(duì)應(yīng)的濾波器的幅頻響應(yīng);4個(gè)按鈕 Draw1﹑ Draw2、Close和Clear,點(diǎn)擊Draw1,即可得到原始信號(hào)的時(shí)域和頻域波形,點(diǎn)擊Draw2,即可得到濾波后的信號(hào)的時(shí)域和頻域波形,通過(guò)頻譜圖可直觀地觀察濾波效果,點(diǎn)擊Close,即退出該GUI界面,點(diǎn)擊Clear,可以清除剛剛產(chǎn)生的圖形,為重新設(shè)置參數(shù)時(shí)生成新圖形做準(zhǔn)備。下面通過(guò)設(shè)計(jì)實(shí)例實(shí)現(xiàn)之。
設(shè)混合信號(hào) x=cos(2πf1t)+cos(2πf2t)+cos(2πf3t),(f1<f2<f3),設(shè)計(jì)低通﹑高通和帶通濾波器。要求:低通濾波器將頻率為f1的信號(hào)選擇出來(lái),高通濾波器將頻率為 f3的信號(hào)選擇出來(lái),帶通濾波器將頻率為 f2的信號(hào)選擇出來(lái)。這里f1,f2,f3均由動(dòng)態(tài)文本框錄入;為了清楚再現(xiàn)濾波效果,還對(duì)濾波前后的信號(hào)做了快速傅立葉變換FFT譜分析運(yùn)算,其由GUI界面的按鈕Draw1和Draw2實(shí)現(xiàn)之,部分主要程序如下:
上述程序在Matlab環(huán)境下運(yùn)行,會(huì)生成如圖1所示的空GUI界面。
圖1 空GUI界面
設(shè)混合輸入信號(hào)x的頻率分別為10 Hz﹑20 Hz和30 Hz,則選采樣頻率100 Hz,要求用帶通濾波器將20 Hz的信號(hào)選擇出來(lái),故在圖1的動(dòng)態(tài)文本框中依次輸入混合信號(hào)的頻率,采樣頻率和帶通濾波器的截止頻率,用鼠標(biāo)點(diǎn)擊控件Draw1,則得到原信號(hào)的時(shí)域和頻域波形,見圖2。
圖2 IIR帶通濾波器的GUI界面圖
圖2的GUI界面的前2個(gè)波形圖是原信號(hào)的時(shí)域和頻域波形,從頻域圖形可以清楚地看到原信號(hào)的3個(gè)頻率成分。點(diǎn)擊彈出式菜單中的可選項(xiàng)bandpass,則生成圖2的GUI界面中的第3個(gè)波形圖,即為帶通濾波器的幅頻響應(yīng)。點(diǎn)擊Draw2按鈕,則生成圖2的GUI界面的最后2個(gè)波形圖,其為濾波后的信號(hào)的時(shí)域波形和頻域波形,由頻譜圖可見,經(jīng)帶通濾波器濾波后,10 Hz和30 Hz的信號(hào)被衰減,而 20 Hz的信號(hào)被選擇出來(lái)。點(diǎn)擊按鈕Clear,則清除圖2中的圖形,見圖3。
圖3 清空后的GUI界面
若將截止頻率2改為15 Hz,截止頻率1的動(dòng)態(tài)文本框處為空,點(diǎn)擊彈出式菜單的lowpass選項(xiàng),則生成低通濾波器的幅頻響應(yīng),各波形見圖4。
圖4 IIR低通濾波器的GUI界面圖
對(duì)頻率加以修改,點(diǎn)擊highpass選項(xiàng),會(huì)生成高通濾波器的幅頻響應(yīng),鑒于道理相同,不再給出其相應(yīng)的幅頻響應(yīng)界面圖。若點(diǎn)擊按鈕Close,則退出該界面。
利用Matlab圖形用戶界面進(jìn)行IIR數(shù)字濾波器的設(shè)計(jì),方便﹑直觀、快捷。文中通過(guò)實(shí)例給出了數(shù)字低通和帶通濾波器的設(shè)計(jì)界面,由此界面可見,數(shù)據(jù)的輸入﹑改寫方便,輸出結(jié)果快捷﹑直觀﹑一目了然。省去了重復(fù)調(diào)用M 文件,重新改寫數(shù)據(jù)的麻煩,從而減輕了工作量,故而,此方法為濾波器的設(shè)計(jì)提供了一種新思路。
[1]陳希林,肖明清.一種LabWindows/CVI與MATLAB混合編程的實(shí)現(xiàn)方法[J].微計(jì)算機(jī)信息,2005(1):43-45.
[2]王默玉,宗偉.基于Matlab的圖形用戶界面的構(gòu)造方式與應(yīng)用[J].現(xiàn)代電力,2002,19(1):76-82.
[3]張學(xué)敏.基于圖形用戶界面的FIR濾波器的設(shè)計(jì)與仿真[J].長(zhǎng)春工程學(xué)院學(xué)報(bào):自然科學(xué)版,2009(4):33-35.
[4]陳亞勇.MATLAB信號(hào)處理詳解[M].北京:人民郵電出版社,2005:156-273.
[5]李麗,王振領(lǐng).Matlab工程計(jì)算及應(yīng)用[M].北京:人民郵電出版社,2007:65-139.
[6]張明照,劉政波.應(yīng)用Matlab實(shí)現(xiàn)信號(hào)分析與處理[M].北京:科學(xué)出版社,2006:78-193.