陳 亮 郝衛(wèi)東 喬建華
摘 要:Matlab的GUIDE是專門用于圖形用戶界面(GUI)程序設(shè)計的快速開發(fā)環(huán)境。在此結(jié)合具體的軟件圖形界面設(shè)計實例,介紹利用GUIDE制作圖形用戶界面的基本方法。在利用GUIDE設(shè)計的濾波器分析界面中,用戶不僅可以調(diào)入不同類型的濾波器,還可以對輸入?yún)?shù)進行修改,對仿真結(jié)果給出圖形和文字顯示。總體界面友好,具有開放性,既可方便不同用戶使用,也可不斷完善和擴充其功能。
關(guān)鍵詞:Matlab;圖形用戶界面;濾波器分析界面;數(shù)字信號處理
中圖分類號:TP319文獻標識碼:B
文章編號:1004-373X(2009)10-039-03
Design of Filter Analysis Interface Based on Matlab
CHEN Liang1,HAO Weidong1,QIAO Jianhua2
(1.Mechano-eletronics Engineering College,Guilin University of Electronic Technology,Guilin,541004,China;
2.College of Electronic& Information Engineering,Taiyuan University of Science and Technology,Taiyuan,030024,China)
Abstract:GUIDE of Matlab is a quick development environment,which is specially used for GUI program design.Based on an idiographic design example,this paper introduces basic methods to generate GUI with GUIDE.In this example,by the interface designed with GUIDE,it can not only load different types of filter,but also modify input parameters,and give figure and text show of simulation result.This interface is friendly and open,and is very convenient for different user,to perfect and extend its function.
Keywords:Matlab;graphical user interfaces;interface of the filter analysis;digital signal processing
0 引 言
隨著信息時代和數(shù)字世界的到來,信號處理已在通信、語音、圖像、自動控制、雷達、軍事、航空航天、醫(yī)療和家用電器等眾多領(lǐng)域得到了廣泛的應(yīng)用。在信號處理中起著重要的作用并已獲得廣泛應(yīng)用的是濾波器。在設(shè)計濾波器時,通常采用Matlab來進行輔助設(shè)計和仿真。
Matlab是集數(shù)值計算、符號運算及圖形處理等強大功能于一體的科學計算語言。作為強大的科學計算平臺,它幾乎能滿足所有的計算要求。隨著對仿真和程序設(shè)計通用性及可視化需求的日益增加,新版本的Matlab著重改善了圖形用戶界面(GUI)的制作,極大地滿足了用戶的要求。
在此以Matlab 7.1為設(shè)計平臺,利用Matlab的圖形用戶界面開發(fā)環(huán)境(GUIDE)設(shè)計濾波器的分析界面。
1 設(shè)計的基本內(nèi)容及特點
數(shù)字信號處理課程不僅是高等院校電類專業(yè)和信息類專業(yè)學生的必修課程,也是工科學生受益較多的一門課程。但是課程的許多理論都基于繁瑣的數(shù)學理論和數(shù)學推導(dǎo),特別是濾波器分析的內(nèi)容,因其理論及設(shè)計抽象難懂,容易使學生感到乏味。這里設(shè)計的基于Matlab平臺的濾波器分析界面,不僅可以簡單方便地設(shè)計和分析各種濾波器,而且有助于提高學生學習的效率,幫助學生理解課堂所學理論。該系統(tǒng)的基本內(nèi)容及特點如下:
(1) 具有數(shù)據(jù)輸入、圖形輸出、數(shù)據(jù)修改和文件保存、打印等功能,系統(tǒng)內(nèi)容豐富,結(jié)果直觀易懂,便于分析;
(2) 通過選擇和濾波器參數(shù)輸入,可以顯示輸出基于Matlab設(shè)計出的多種FIR和I2R數(shù)字濾波器;
(3) 可以對FIR或I2R的濾波器進行幅頻響應(yīng)、單位脈沖響應(yīng)、零極點分析和群延遲特性分析,并可打印輸出分析結(jié)果;
(4) 界面可視性強,操作簡單方便,且系統(tǒng)易于擴展新的分析內(nèi)容及仿真。
2 GUI設(shè)計工具簡介
GUIDE(Graphical User Interface Development Environment)是Matlab中一個專用于GUI程序設(shè)計的向?qū)гO(shè)計器,而GUI是由各種圖形對象,如圖形窗口、圖軸、菜單、按鈕、文本框等構(gòu)建的用戶界面,是人機交互的有效工具和方法,通過GUIDE可以很方便地設(shè)計出各種符合要求的圖形用戶界面。用戶可以根據(jù)界面提示完成整個工程,卻不必去了解工程內(nèi)部是如何工作的。GUI設(shè)計既可以基本的Matlab程序設(shè)計為主,也可以鼠標為主利用GUIDE工具進行設(shè)計,也可綜合以上兩種方法進行設(shè)計。調(diào)用GUIDE的方法有兩種,在Matlab主菜單中點擊File菜單的New子菜單,選擇GUI選項,或在Matlab命令窗口輸入guide命令,即可打開一個可編輯的新窗口。在新窗口中有界面設(shè)計需要用到的工具,如屬性編輯器(Properties Inspector)、控件布置編輯器(Alignment Objects)、菜單編輯器(Menu Editor)、對象瀏覽器(Object Browser)、網(wǎng)格標尺設(shè)置編輯器(Grid and Rulers)以及GUI應(yīng)用屬性設(shè)置編輯器(Guide Application Options)。利用這些工具就可設(shè)計出需要的圖形操作界面。
3 系統(tǒng)總體設(shè)計步驟
在該系統(tǒng)的設(shè)計中,界面布局設(shè)計采用自頂向下的設(shè)計方法,即先設(shè)計引導(dǎo)界面和主界面,再設(shè)計各個子界面。界面設(shè)計完成后,只是一些靜態(tài)的畫面,而沒有內(nèi)涵,還不能用于實驗操作,想要達到仿真分析的功能,還必須借助于函數(shù)調(diào)用。在設(shè)計中,各個回調(diào)函數(shù)的編寫順序則是采用自底向上的設(shè)計方法,即先編制各個子界面中回調(diào)函數(shù),再編寫主界面和引導(dǎo)界面的回調(diào)函數(shù)。
其設(shè)計的具體操作步驟如下:
(1) 使用Matlab圖形用戶界面開發(fā)環(huán)境(GUIDE)提供了一系列創(chuàng)建用戶圖形界面(GUI)的工具,設(shè)計整個界面的開始引導(dǎo)界面、主界面和具體各個子界面。
(2) 分別編寫各個子界面的各個控件對象的回調(diào)函數(shù),以實現(xiàn)控件相應(yīng)的控制功能,達到直接通過界面上各個控件就可以控制數(shù)據(jù)的輸入輸出,并可以方便地達到對結(jié)果數(shù)據(jù)及其圖形進行讀取和分析的目的。
(3) 編寫主界面的回調(diào)函數(shù),將各個子界面整合在主界面中,即通過主界面就可以進入任何一個子界面進行操作。
(4) 編寫開始引導(dǎo)界面的回調(diào)函數(shù),實現(xiàn)從引導(dǎo)界面直接進入主界面。
4 濾波器分析界面的設(shè)計及實現(xiàn)
4.1 濾波器分析界面系統(tǒng)的設(shè)計
該系統(tǒng)的整體結(jié)構(gòu)設(shè)計由兩部分組成:引導(dǎo)界面的設(shè)計和主界面的設(shè)計。系統(tǒng)的整體結(jié)構(gòu)框圖見圖1。
引導(dǎo)界面包括了此次設(shè)計的標題、歡迎圖形、進入下一個界面的按鈕(WELCOM)及退出按鈕(CLOSE)。在初始引導(dǎo)界面中,當用戶單擊命令按鈕時,會產(chǎn)生相應(yīng)的動作,例如當按下WELCOM鍵時,會自動執(zhí)行命令并跳轉(zhuǎn)到濾波器分析系統(tǒng)的主界面。
在濾波器分析系統(tǒng)的主界面中,總共包含4個模塊,主顯示模塊、菜單模塊、濾波器設(shè)計模塊和濾波器分析模塊。其中,主顯示模塊負責顯示選中的濾波器設(shè)計和分析的結(jié)果;菜單模塊中除了一般系統(tǒng)均使用的菜單外,還增加了幾個控制背景和退出系統(tǒng)等特色菜單,以方便用戶使用;濾波器設(shè)計和分析模塊中,分為若干個子界面,分別調(diào)用已編寫的函數(shù)來實現(xiàn)設(shè)計和分析功能。
4.2 濾波器分析界面系統(tǒng)的實現(xiàn)
設(shè)計出的主界面是用來進入各個子界面的。系統(tǒng)使用菜單及其一些按鈕控件是用來實現(xiàn)各個子界面的有機聯(lián)系,界面美觀大方,易于操作。在主界面中有4個菜單分類,分別是System系統(tǒng)、Analysis分析、Tool工具以及Help幫助。
(1) 系統(tǒng)(System):System中包含了兩大項:I2R System和FIR System。這兩個子系統(tǒng)中又包含許多子項,涵蓋了比較常用的典型濾波器,如圖2所示。
在 I2R System和 FIR System這兩個子系統(tǒng)中,又分別分為數(shù)字濾波器(Digital Filter)與模擬濾波器(Analog Filter)兩個子項,而在這兩個子項下都同樣包含著Low Pass(低通)、High Pass(高通)、Band Pass(帶通)、Band Stop(帶阻)濾波器(Filter),另外在FIR system 中還加入對窗函數(shù)的分析比較。
在設(shè)計I2R模擬濾波器的時候,設(shè)計者可以自行輸入模擬高通、帶通、帶阻濾波器的參數(shù)(階次和通帶波紋系數(shù)),并對輸入不同參數(shù)的濾波器進行清晰的比較設(shè)計。例如,在設(shè)計I2R模擬帶阻濾波器時,對階次為2階和9階,通帶波紋同為10 dB的兩個濾波器進行設(shè)計,只需按要求輸入不同的參數(shù),即能進行方便快捷的比較設(shè)計,并且還能不斷地按提示要求輸入?yún)?shù)增加濾波器設(shè)計比較,如圖3所示。
(2) 分析(Analysis):在Analysis菜單中,對各種常用的典型濾波器進行了分析比較。下面僅以兩種類型的低通濾波器比較分析為例,說明該系統(tǒng)分析功能的實現(xiàn),即從I2R濾波器和FIR濾波器中各選出一種低通濾波器進行比較分析。I2R 濾波器和FIR濾波器各有所長,I2R 濾波器設(shè)計簡單,但是往往脫離不了模擬濾波器的格局;FIR濾波器雖然設(shè)計靈活,但是階次較高,信號延遲大,所以要對其進行比較。在實際應(yīng)用中,選擇濾波器型號時,應(yīng)該從多方面加以考慮。
進行I2R和FIR兩類低通濾波器的比較分析時,首先選擇Analysis菜單下I2R Analyze(I2R濾波器分析)中的雙線性z變換設(shè)計數(shù)字低通濾波器進行分析,然后再選中菜單下FIR Analyze(FIR 濾波器分析)中的針對切比雪夫逼近法設(shè)計數(shù)字低通濾波器進行分析。兩類低通濾波器的比較,主要分析I2R/FIR數(shù)字低通濾波器的幅頻響應(yīng);I2R/FIR 數(shù)字低通濾波器的單位脈沖響應(yīng)h(n),I2R/FIR數(shù)字低通濾波器的群延遲特性;I2R/FIR數(shù)字低通濾波器的零極點分析等四項內(nèi)容,如圖4所示。
由圖4可以得出,I2R濾波器系統(tǒng)函數(shù)的極點可以位于單位圓的任何位置,因此在相同設(shè)計指標下(與FIR濾波器相比),實現(xiàn)I2R濾波器的階次低,經(jīng)濟效率高,但它以相位非線性為代價。相反,FIR卻得到嚴格的線性相位,但FIR濾波器系統(tǒng)的極點固定在原點,所以必須使用較高階次的濾波器實現(xiàn)相同的技術(shù)指標(與I2R濾波器相比),通常階次要高5~10倍,致使成本較高,也造成較大的信號延遲。
(3) 工具(Tool):此項包含一個子項升級(Live Update),當計算機未聯(lián)網(wǎng)時,就會彈出一個網(wǎng)絡(luò)未連接的錯誤信息顯示對話框。
(4) 幫助(Help):此項包含兩個子項Help和About。當選擇Help選項時,會執(zhí)行程序調(diào)用并顯示幫助的內(nèi)容;當選擇About選項時,會顯示該圖形用戶界面的版本號及設(shè)計時間等相關(guān)信息。
5 結(jié) 語
在Matlab 7.1版本的基礎(chǔ)上,利用GUIDE設(shè)計完成的這個濾波器分析界面,不管是對初學者還是對研究分析者,都可以更加清晰地認識各種濾波器,并加以直觀形象地分析和選擇。作為一個通用的學習分析程序,可以供不同的設(shè)計、學習人員使用,可根據(jù)圖形界面的參數(shù)提示修改輸入相應(yīng)的參數(shù),就可以方便地顯示并得出分析結(jié)論。該設(shè)計系統(tǒng)可以應(yīng)用到數(shù)字信號處理的實驗教學之中,能夠激發(fā)學生學習的興趣,達到提高教學質(zhì)量的目的。
參考文獻
[1]火元蓮,齊永鋒,劉亞麗,等.基于Matlab的數(shù)字濾波器的設(shè)計與應(yīng)用研究[J].現(xiàn)代電子技術(shù),2007,30(23):166-170.
[2]王磊,張婉.基于Matlab的數(shù)字濾波器交互界面設(shè)計[J].電子質(zhì)量,2008(5):32-35.
[3]李騰飛,張輝.基于LabWindows_CVI和Matlab的濾波器設(shè)計[J].電子科技,2007(3):29-31.
[4]程明,李裕能,王翔.基于Matlab的數(shù)字濾波器分析[J].通信電源技術(shù),2006,23(1):25-27.
[5]張晶,李心廣.Matlab在通信原理教學中的應(yīng)用[J].中國現(xiàn)代教育裝備,2007(2):21-23.
[6]丁玉美,高西全.數(shù)字信號處理[M].西安:西安電子科技大學出版社,2004.
[7]薛年喜.Matlab在數(shù)字信號處理中的應(yīng)用[M].北京:清華大學出版社,2003.
[8]樓順天,劉小東,李博菡.基于Matlab 7.x的系統(tǒng)分析與設(shè)計——信號處理[M].西安:西安電子科技大學出版社,2005.
[9]王家文,王皓,劉海.Matlab 7.0編程基礎(chǔ)[M].北京:機械工業(yè)出版社,2005.
[10]飛思科技產(chǎn)品研發(fā)中心.Matlab 7輔助信號處理技術(shù)與應(yīng)用[M].北京:電子工業(yè)出版社,2005.