基于Matlab GUI的數(shù)字濾波器設(shè)計(jì)及其應(yīng)用
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘 要: 基于數(shù)字信號(hào)處理原理,在分析數(shù)字濾波器設(shè)計(jì)理論和Matlab編程技術(shù)及其GUI圖形用戶界面設(shè)計(jì)的基礎(chǔ)上,開(kāi)發(fā)了具有交互式特點(diǎn)的數(shù)字濾波器軟件,界面操作簡(jiǎn)單方便,可以根據(jù)需要選擇濾波器類型,輸入相關(guān)參數(shù),然后選擇相應(yīng)的功能按鈕,就可以得到濾波器的特性參數(shù),并進(jìn)行濾波器的性能分析,打破了以往濾波器設(shè)計(jì)過(guò)程中大量繁瑣的數(shù)值計(jì)算問(wèn)題,為數(shù)字濾波器的設(shè)計(jì)和應(yīng)用提供了一個(gè)有效的輔助工具。
關(guān)鍵詞: 數(shù)字信號(hào)處理; 數(shù)字濾波器; Matlab GUI; 圖像處理; 語(yǔ)音信號(hào)處理
數(shù)字濾波器通常通過(guò)一定的運(yùn)算關(guān)系改變輸入信號(hào)所含頻率成分的相對(duì)比例或者濾除某些頻率成分來(lái)實(shí)現(xiàn)濾波,其應(yīng)用非常廣泛。然而, 在傳統(tǒng)數(shù)字濾波器的設(shè)計(jì)過(guò)程中需要大量繁瑣的數(shù)值計(jì)算,如果手工計(jì)算則費(fèi)時(shí)費(fèi)力。目前,數(shù)字濾波器的設(shè)計(jì)常借助計(jì)算機(jī),利用Matlab軟件來(lái)實(shí)現(xiàn)。Matlab中的圖形界面編程環(huán)境GUIDE為用戶開(kāi)發(fā)軟件界面提供了強(qiáng)有力的工具。本文在Matlab GUI基礎(chǔ)上開(kāi)發(fā)了數(shù)字濾波器的設(shè)計(jì)分析軟件,并設(shè)計(jì)開(kāi)發(fā)了應(yīng)用于圖像處理和語(yǔ)音信號(hào)處理模塊。用戶在使用時(shí)只需輸入要設(shè)計(jì)的濾波器所需參數(shù)值,選擇要設(shè)計(jì)的濾波器類型,即在分析濾波器特性時(shí)選擇相應(yīng)功能按鈕就能得出對(duì)應(yīng)的特性。該工具解決了用戶在設(shè)計(jì)數(shù)字濾波器時(shí)大量繁瑣的數(shù)值計(jì)算,不僅可以作為研究設(shè)計(jì)數(shù)字濾波器的輔助工具,還可以作為相關(guān)課程的輔助教學(xué)軟件。
1 Matlab GUI設(shè)計(jì)工具簡(jiǎn)介
Matlab是一個(gè)面向科學(xué)與工程的計(jì)算軟件,它將不同領(lǐng)域的計(jì)算用函數(shù)的形式提供給用戶;用戶在使用時(shí),只需調(diào)用這些函數(shù)并賦予實(shí)際參數(shù)就能解決實(shí)際問(wèn)題[1]。它涉及數(shù)值分析、自動(dòng)控制、信號(hào)處理、圖像處理、小波分析及神經(jīng)網(wǎng)絡(luò)等幾十個(gè)領(lǐng)域的計(jì)算和圖形顯示。在Matlab中設(shè)計(jì)數(shù)字濾波器軟件的工具有GUI與FDATool,兩個(gè)工具都可以設(shè)計(jì)出數(shù)字濾波器。FDATool工具可以快速設(shè)計(jì)各種類型的濾波器,但是這個(gè)工具界面單一,用戶無(wú)法根據(jù)需要來(lái)設(shè)計(jì)滿意的界面。而圖形用戶界面GUI(Graphical User Inter-face)的設(shè)計(jì)是非常靈活的,它主要是一個(gè)界面設(shè)計(jì)工具集,Matlab將所有GUI支持的控件都集成在這個(gè)環(huán)境中,并可進(jìn)行各項(xiàng)屬性設(shè)置[2];用戶設(shè)計(jì)好的圖形用戶界面保存后生成一個(gè).fig文件,同時(shí)自動(dòng)生成包含圖形用戶界面初始化和組件界面布局控制代碼的M文件,為實(shí)現(xiàn)回調(diào)函數(shù)的編寫(xiě)提供了一個(gè)參考框架,包含GUI設(shè)計(jì)、控制函數(shù)及控件的回調(diào)函數(shù),主要用來(lái)控制GUI展開(kāi)時(shí)的各種特征[3]。對(duì)于熟練編程者,不需要GUI向?qū)В苯泳帉?xiě)M程序即可生成人機(jī)交互的有效圖形用戶界面。
2 數(shù)字濾波器的設(shè)計(jì)理論
2.1系統(tǒng)設(shè)計(jì)主流程及主界面
系統(tǒng)設(shè)計(jì)主流程如圖1所示,系統(tǒng)主功能操作界面設(shè)計(jì)如圖2所示。
2.2 數(shù)字濾波器的設(shè)計(jì)步驟
(1)確定指標(biāo):在設(shè)計(jì)一個(gè)濾波器之前,必須首先根據(jù)實(shí)際的工程需要確定濾波器的技術(shù)指標(biāo)。通常選擇數(shù)字濾波器實(shí)現(xiàn)選頻操作。因此,指標(biāo)的形式一般在頻域中給出幅度和相位響應(yīng)。幅度指標(biāo)主要以兩種方式給出:①絕對(duì)指標(biāo),它提供對(duì)幅度響應(yīng)函數(shù)的要求,一般應(yīng)用于FIR濾波器的設(shè)計(jì);②相對(duì)指標(biāo),它以分貝值的形式給出要求,在工程實(shí)際應(yīng)用中,這種指標(biāo)最受歡迎。對(duì)于相位響應(yīng)指標(biāo)形式,通常希望系統(tǒng)在通頻帶內(nèi)有線性相位。運(yùn)用線性相位響應(yīng)指標(biāo)進(jìn)行濾波器設(shè)計(jì)具有如下優(yōu)點(diǎn):①只包含實(shí)數(shù)算法,不涉及復(fù)數(shù)運(yùn)算;②不存在延遲失真,只有固定數(shù)量的延遲;③長(zhǎng)度為N的濾波器(階數(shù)為N-1),計(jì)算量為N/2數(shù)量級(jí)。因此,本文中濾波器的設(shè)計(jì)就以線性相位FIR濾波器的設(shè)計(jì)為例。
(2)逼近:確定了技術(shù)指標(biāo)后,就可以建立目標(biāo)數(shù)字濾波器模型。通常采用理想的數(shù)字濾波器模型。之后,利用數(shù)字濾波器的設(shè)計(jì)方法,設(shè)計(jì)出一個(gè)實(shí)際濾波器模型來(lái)逼近給定的目標(biāo)。
(3)性能分析和計(jì)算機(jī)仿真:上兩步的結(jié)果是得到以差分、系統(tǒng)函數(shù)或沖激響應(yīng)描述的濾波器。根據(jù)這個(gè)描述就可以分析其頻率特性和相位特性,以驗(yàn)證設(shè)計(jì)結(jié)果是否滿足指標(biāo)要求;或者利用計(jì)算機(jī)仿真實(shí)現(xiàn)設(shè)計(jì)的濾波器,再分析濾波結(jié)果來(lái)判斷。
2.3 IIR數(shù)字濾波器的Matlab設(shè)計(jì)
Matlab信號(hào)處理工具箱提供了幾個(gè)直接設(shè)計(jì)IIR數(shù)字濾波器的函數(shù),這些函數(shù)把IIR數(shù)字濾波器典型設(shè)計(jì)中的復(fù)雜實(shí)現(xiàn)過(guò)程集成為一個(gè)整體,為設(shè)計(jì)IIR數(shù)字濾波器帶來(lái)了極大的方便[4]。主要函數(shù)有:(1)函數(shù)butter:設(shè)計(jì)Butterworth濾波器,其特性是通帶內(nèi)的幅度響應(yīng)最大限度的平滑,但損失了截止頻率處的下降斜度。(2)函數(shù)chebyl:設(shè)計(jì)Chebyshev I型濾波器,其通帶內(nèi)為等波紋,阻帶內(nèi)為單調(diào)。Chebyshev I型濾波器的下降斜度比II型大,但其代價(jià)是通帶內(nèi)波紋較大。(3)函數(shù)cheby2:設(shè)計(jì)Chebyshev II型濾波器,其通帶內(nèi)為單調(diào),阻帶內(nèi)等波紋。Chebyshev II型濾波器的下降斜度比I型小,但其阻帶內(nèi)波紋較大。(4)函數(shù)ellip:設(shè)計(jì)橢圓濾波器,與前幾種濾波器相比,ellip函數(shù)可以得到下降斜度更大的濾波器,得到通帶和阻帶均為等波紋;一般情況下,橢圓濾波器能以最低的階實(shí)現(xiàn)指定的性能指標(biāo)。以上4種函數(shù)都可以設(shè)計(jì)低通、高通、帶通和帶阻的數(shù)字和模擬濾波器。
IIR數(shù)字濾波器在系統(tǒng)中界面設(shè)計(jì)如圖3所示,其中左方為濾波器類型、通帶選擇及參數(shù)輸入?yún)^(qū),可以根據(jù)需要在Butterworth型、Chebyshev I型、Chebyshev II型和橢圓濾波器4種類型中選擇任意一種濾波器,并且可以在低通、高通、帶通和帶阻4種通帶中選擇任意一種,然后輸入相關(guān)參數(shù),點(diǎn)擊“運(yùn)行”按鈕,就可以設(shè)計(jì)出相應(yīng)的IIR數(shù)字濾波器;右上方曲線為濾波器的幅頻響應(yīng)圖,右下方曲線為濾波器的相頻響應(yīng)圖。圖3為Chebyshev I型帶通IIR數(shù)字濾波器在系統(tǒng)中的設(shè)計(jì)實(shí)現(xiàn),其他類型IIR數(shù)字濾波器設(shè)計(jì)界面與之類似。
2.4 FIR數(shù)字濾波器的Matlab設(shè)計(jì)
FIR濾波器通常采用窗函數(shù)法設(shè)計(jì)。窗函數(shù)法設(shè)計(jì)FIR濾波器的基本思想是:根據(jù)給定的濾波器技術(shù)指標(biāo),選擇濾波器長(zhǎng)度N和窗函數(shù)ω(n),使其具有最窄寬度的主瓣和最小的旁瓣,其核心是從給定的頻率特性,通過(guò)加窗確定有限長(zhǎng)單位脈沖響應(yīng)序列h(n)[5]。工程中常用的窗函數(shù)共有7種,即矩形窗(Boxcar)、三角窗(Triang)、巴特利特(Bartlett)窗、漢寧(Hanning)窗、漢明(Hamming)窗、布萊克曼(Blackman)窗和凱塞(Kaiser)窗。
FIR數(shù)字濾波器設(shè)計(jì)界面如圖4所示,其中左邊為濾波器類型、通帶選擇及參數(shù)輸入?yún)^(qū),可以根據(jù)需要在Boxcar、Triang、Bartlett、Hanning、 Hamming、 Blackman和Kaiser等7種窗函數(shù)中選擇任意一種設(shè)計(jì)濾波器,并且可以在低通、高通、帶通和帶阻4種通帶中選擇任意一種,然后輸入相關(guān)參數(shù),點(diǎn)擊“運(yùn)行”按鈕,就可以設(shè)計(jì)出相應(yīng)的FIR數(shù)字濾波器;右上方曲線為濾波器的幅頻響應(yīng)圖,右下方曲線為濾波器的相頻響應(yīng)圖。圖4為Kaiser型高通FIR數(shù)字濾波器在系統(tǒng)中的設(shè)計(jì)實(shí)現(xiàn),其他類型FIR數(shù)字濾波器設(shè)計(jì)界面與之類似。
3 數(shù)字濾波器的應(yīng)用設(shè)計(jì)
3.1數(shù)字濾波器在圖像處理中的應(yīng)用
設(shè)圖像信號(hào)f(x,y)通過(guò)線性不變系統(tǒng)h(x,y)的結(jié)果是g(x,y),即g(x,y)=f(x,y)*h(x,y),根據(jù)卷積定理,在頻域上應(yīng)有G(u,v)=F(u,v)*H(u,v)。其中,G(u,v)、F(u,v)、H(u,v)分別是g(x,y)、f(x,y)和h(x,y)的傅里葉變換[6]。頻域增強(qiáng)的主要步驟是:(1)計(jì)算圖像的傅里葉變換;(2)將其與一個(gè)根據(jù)要求設(shè)計(jì)的轉(zhuǎn)移函數(shù)相乘; (3)再將其結(jié)果進(jìn)行傅里葉反變換得到增強(qiáng)的圖像。實(shí)際上,圖像的能量大部分集中在幅頻的低頻和中頻段,而圖像的邊緣和噪聲對(duì)應(yīng)于高頻部分。因此,數(shù)字濾波器在圖像處理中主要應(yīng)用于低通和高通濾波,低通濾波能降低高頻成分幅度,過(guò)濾噪聲,以減弱噪聲的影響,以增強(qiáng)圖像;而高通濾波使圖中各區(qū)域的邊界得到較顯著增強(qiáng)的同時(shí)濾掉了低頻分量,使圖中原來(lái)較平滑區(qū)域內(nèi)部的灰度動(dòng)態(tài)范圍被壓縮,因而整幅圖像變得比較昏暗,但圖像的輪廓卻十分明顯。
數(shù)字濾波器在圖像處理中的應(yīng)用設(shè)計(jì)界面,可以根據(jù)需要在低通、高通濾波器之間選擇,然后調(diào)入要處理圖像,點(diǎn)擊“處理圖像”按鈕,即可看到圖像濾波效果。圖5為數(shù)字濾波器在圖像處理方向的低通應(yīng)用設(shè)計(jì)界面,右上圖為原始圖像,右下圖為加入了噪聲后的圖像,左下圖為經(jīng)過(guò)低通濾波后的圖像。從圖5可以看出,低通濾波器能有效地過(guò)濾圖像中的高頻加性噪聲,增強(qiáng)圖像。