模擬帶通濾波器在信號的檢測和傳輸過程中起著很重要的作用,但在傳統(tǒng)模擬帶通濾波器的設(shè)計過程中需要大量繁瑣的數(shù)值計算,如果手工計算則費時費力。也有許多公司開發(fā)了相關(guān)的濾波器設(shè)計軟件,,如 AnsoftDesigner,,F(xiàn)ilterlab等,但是它們大多數(shù)使用起來不容易上手,,而且價格比較昂貴,。Matlab中的圖形界面編程環(huán)境 GUIDE為用戶開發(fā)軟件界面提供了強有力的工具。在圖形界面編程環(huán)境GUIDE下,,設(shè)計好濾波器的設(shè)計工具界面后,,對界面上各個控件的回調(diào)函數(shù)進行編寫就能設(shè)計出交互式濾波器的分析設(shè)計軟件。
本文在Matlab GUI基礎(chǔ)上設(shè)計了針對Chebyshev型模擬帶通濾波器的設(shè)計分析軟件,。用戶在使用時只需輸入要設(shè)計的濾波器設(shè)計指標值,,選擇要設(shè)計的濾波器類型,即可在分析濾波器特性時只需選擇相應(yīng)菜單就能得出對應(yīng)的特性,。該工具解決了用戶在設(shè)計Chebyshev型模擬帶通濾波器時大量繁瑣的數(shù)值計算,,不僅可以作為研究設(shè)計Chebyshev型模擬帶通濾波器的輔助工具,還可以作為設(shè)計濾波器等相關(guān)課程的輔助教學(xué)軟件,。
1 模擬帶通濾波器的設(shè)計理論
目前,,模擬高通濾波器,、帶通濾波器和帶阻濾波器的設(shè)計方法都是先將要設(shè)計的濾波器技術(shù)指標通過某種頻率轉(zhuǎn)換關(guān)系轉(zhuǎn)換成模擬低通濾波器的技術(shù)指標,,并依據(jù)這些技術(shù)指標設(shè)計出低通濾波器的轉(zhuǎn)移函數(shù),然后再依據(jù)頻率轉(zhuǎn)換關(guān)系變成所要設(shè)計的濾波器的轉(zhuǎn)移函數(shù),。工程實際中,,設(shè)計高通、帶通,、帶阻濾波器的常用方法是借助低通原型濾波器,,經(jīng)頻率變換和元件變換得到。
對于模擬帶通濾波器的設(shè)計,,首先是將要設(shè)計的模擬帶通濾波器的技術(shù)指標通過頻率變換關(guān)系,,轉(zhuǎn)換成模擬低通濾波器的技術(shù)指標,其次根據(jù)這些技術(shù)指標設(shè)計出低通切比雪夫濾波器轉(zhuǎn)移函數(shù),,最后再依據(jù)頻率轉(zhuǎn)換關(guān)系變成模擬低通切比雪夫濾波器,,其具體設(shè)計流程如圖1所示。
2 Matlab GUI設(shè)計工具簡介
在Matlab中,,圖形用戶界面(graphical user interface,,GUI)是Matlab中一個專用于GUI程序設(shè)計的向?qū)гO(shè)計器,而GUI是由各種圖形對象,,如圖形窗口,、圖軸、菜單,、按鈕,、文本框等構(gòu)建的用戶界面,,是人機交互的有效工具和方法。通過GUIDE可以很方便地設(shè)計出各種符合要求的圖形用戶界面,。用戶通過一定的方法(如鼠標或鍵盤)選擇,、激活這些圖形對象,使計算機產(chǎn)生某種動作或變化,,比如實現(xiàn)計算,、繪圖等。GUI設(shè)計既能以基本的Matlab程序設(shè)計為主,,也能以鼠標為主,,利用 GUIDE工具進行設(shè)計,也可綜合以上兩種方法進行設(shè)計,。GUIDE主要是一個界面設(shè)計工具集,。Matlab將所有GUl支持的用戶控件都集成在這個環(huán)境中并提供界面外觀、屬性和行為相應(yīng)方式的設(shè)置方法,。GUIDE將用戶保存設(shè)計好的圖形用戶界面保存在一個FIG資源文件中,,同時自動生成包含圖形用戶界面初始化和組件界面布局控制代碼的M文件,這個M文件為實現(xiàn)回調(diào)函數(shù)的編寫提供了一個參考框架,。FIG文件是一個二進制文件,,包含系列化的圖形窗口對象。所有對象的屬性都是用戶創(chuàng)建圖形窗口時保存的屬性,。該文件最主要的功能是對象句柄的保存,。M文件包含GUI設(shè)計、控制函數(shù)及控件的回調(diào)函數(shù),,主要用來控制 GUI展開時的各種特征,。該文件基本上可以分為GUI初始化和回調(diào)函數(shù)2個部分,控件的回調(diào)函數(shù)可根據(jù)用戶與GUI的具體交互行為分別調(diào)用,。
3 軟件界面設(shè)計
在軟件設(shè)計時,,通過文本編輯框控件來接收用戶輸入的濾波器設(shè)計指標值,考慮到分析濾波器時輸出的參數(shù)較多,,如果用一一對應(yīng)的文本框來接收輸出的參數(shù)值,,則使軟件界面在設(shè)計中難以布局,并影響了界面的美觀,,所以只用一個文本編輯框控件來實現(xiàn)多個參數(shù)的輸出,。在濾波器類型選擇控件方面,因為只用2種濾波器來進行選擇設(shè)計,,所以使用兩個單選按鈕,,以實現(xiàn)濾波器類型的選擇;在濾波器特性曲線分析和參數(shù)計算方面,,利用圖形界面設(shè)計工具 GUIDE提供的菜單編輯器來設(shè)計出分析,、計算菜單,,并加入相應(yīng)的功能子菜單。繪制輸出濾波器的特性曲線時使用一個坐標軸來實現(xiàn)各個特性曲線的繪制,,這樣可以使軟件界面簡潔明了,。最后對參數(shù)輸入和參數(shù)輸出區(qū)進行功能區(qū)域劃分,利用控件工具箱中的框架按鈕,,將參數(shù)的輸入與輸出區(qū)劃分,,利用控件工具箱中文本標簽對上面相應(yīng)控件的功能命名。將設(shè)計好的界面文件保存運行,,就可以看到軟件在運行時顯示出的實際效果,。設(shè)計的界面如圖2所示,設(shè)計出的軟件界面由4個部分組成:菜單欄,、參數(shù)輸入?yún)^(qū),、參數(shù)輸出區(qū)、繪圖區(qū),。
其中,,設(shè)計的分析菜單包括濾波器的幅頻特性、相頻特性,、階躍響應(yīng),、脈沖相應(yīng)和零極點子菜單,計算菜單包括階數(shù),、零點,、極點、增益,、轉(zhuǎn)移函數(shù)(分子)和轉(zhuǎn)移函數(shù)(分母)子菜單。
4應(yīng)用程序M文件的設(shè)計
GUI 包含許多可以使軟件終端與用戶界面進行交互的用戶界面組件,,GUI實現(xiàn)的任務(wù)之一就是控制組件如何響應(yīng)用戶的行為,。Matlab通過創(chuàng)建應(yīng)用程序M文件為 GUI控制程序提供一個框架。所有代碼(包括回調(diào)函數(shù))都包含在應(yīng)用程序M文件中,,即完成了圖形界面的設(shè)計后,,應(yīng)用程序設(shè)計的主要工作是控件回調(diào)函數(shù)的設(shè)計。下面討論程序設(shè)計流程及控件回調(diào)函數(shù)的設(shè)計,。
4.1 程序設(shè)計流程
軟件運行時,,系統(tǒng)首先初始化。接著判斷輸入的濾波器參數(shù)及其類型是否正確,,不正確重新輸入,,正確即可選擇相應(yīng)的功能菜單,實現(xiàn)相應(yīng)的功能,。程序具體流程圖如圖3所示,。
4.2 控件回調(diào)函數(shù)設(shè)計
該軟件的控件回調(diào)函數(shù)包括“確定”按鈕控件回調(diào)函數(shù),、“清除”按鈕控件回調(diào)函數(shù)、濾波器類型選擇控件回調(diào)函數(shù),、“分析”菜單下各子菜單功能回調(diào)函數(shù)和“計算”菜單下各子菜單功能控回調(diào)函數(shù)的設(shè)計,。限于篇幅,僅討論“分析”菜單下各個菜單功能回調(diào)函數(shù)和“計算”菜單下各功能回調(diào)函數(shù)的設(shè)計,。
4.2.1 “分析”菜單下的各子菜單功能回調(diào)函數(shù)設(shè)計
在“分析”菜單下應(yīng)包含“幅頻特性”,、“相頻特性”、“階躍響應(yīng)”,、“脈沖響應(yīng)”,、“零極點圖”子菜單,分別用來實現(xiàn)幅頻特性曲線,、相頻特性曲線,、階躍響應(yīng)、脈沖響應(yīng),、零極點圖的繪制,。其中,“幅頻特性”菜單用來繪制給定參數(shù)的濾波器的幅頻特性曲線,,在程序設(shè)計過程中首先使用Matlab中的axes函數(shù),,得到坐標軸控件的句柄,以便繪制特性曲線,。在得到用戶輸入的設(shè)計指標值后,,利用if else語句來判斷用戶所選擇的是哪一種濾波器類型,在階數(shù)和截止頻率的計算中,,利用信號處理工具箱中的cheblord和cheb2ord函數(shù)來計算,,再用chebyl和theby2函數(shù)來計算轉(zhuǎn)移函數(shù)的分子、分母,,設(shè)計出用戶所要求的濾波器,。在計算濾波器幅值時,利用freqs函數(shù)計算出轉(zhuǎn)移函數(shù)的響應(yīng),。在繪制濾波器幅頻特性曲線時,,利用plot函數(shù)來完成,即在plot函數(shù)的參數(shù)中設(shè)置相關(guān)值,,以完成幅頻特性曲線的繪制,。為了更好地觀察到濾波器的設(shè)計是否達到相關(guān)的設(shè)計要求,利用line函數(shù)在坐標上標識出通帶最大損耗,、阻帶最小損耗等點,,這樣可以直觀地觀察到所設(shè)計出的濾波器是否符合用戶提出的要求,其具體程序如下:
在“分析”菜單下“相頻特性”子菜單用來繪制給定參數(shù)的濾波器的相頻特性曲線。相頻特性曲線的在程序設(shè)計過程與幅頻特性曲線的程序設(shè)計比較相似,,只是在求得幅值后加一相位計算函數(shù)angle來求相位角,。在plot函數(shù)中將縱坐標參數(shù)換為求出的相位角變量即可完成相頻特性曲線的繪制。
對于“階躍響應(yīng)”回調(diào)函數(shù)的程序設(shè)計,,要將計算出的階躍響應(yīng)繪制在坐標軸控件界面上,,不能利用信號處理工具箱中step函數(shù)直接求得。因為若用該函數(shù)會使繪制出的階躍響應(yīng)曲線在一個新打開的窗口上,,而軟件在界面設(shè)計時,,所求濾波器的所有特性曲線都共用一個坐標軸來繪制;在程序設(shè)計時利用tf函數(shù)將計算出的濾波器轉(zhuǎn)移函數(shù)的分子,、分母系數(shù)生成轉(zhuǎn)移函數(shù),,再利用階躍響應(yīng)函數(shù)step對求出的轉(zhuǎn)移函數(shù)變量求解出階躍響應(yīng)值;最后利用plot函數(shù)繪制出所求濾波器的階躍響應(yīng)曲線,,這樣即可完成階躍響應(yīng)曲線在坐標軸上的繪制,。
“脈沖響應(yīng)”回調(diào)函數(shù)的程序設(shè)計與“階躍響應(yīng)”回調(diào)函數(shù)的程序設(shè)計十分相近,只是將上述程序中的階躍響應(yīng)函數(shù)step換成脈沖響應(yīng)函數(shù)impluse,,并在對應(yīng)的時間做相應(yīng)的調(diào)整即可完成脈沖響應(yīng)回調(diào)函數(shù)的編寫,。
“零極點圖”回調(diào)函數(shù)的程序設(shè)計與以上兩個子菜單的回調(diào)函數(shù)設(shè)計大致相同,程序的設(shè)計結(jié)構(gòu)與前面幾個菜單的回調(diào)函數(shù)的設(shè)計基本一致,。在求得轉(zhuǎn)移函數(shù)的分子,、分母系數(shù)后,利用tf2zp函數(shù)求出所設(shè)計出的濾波器的零點,、極點,、增益,再用 real函數(shù)和imag函數(shù)求出零點,、極點的實部和虛部,,最后利用繪圖函數(shù)plot繪制出系統(tǒng)的零極點圖。
4.2.2 “計算”菜單下各功能回調(diào)函數(shù)的編寫
“計算”菜單下包含了“階數(shù)”,、“零點”,、“極點”、“增益”,、“轉(zhuǎn)移函數(shù)分子系數(shù)”。其中,,“轉(zhuǎn)移函數(shù)分母系數(shù)”菜單分別用來計算所設(shè)計的濾波器階數(shù),、零點、極點,、增益,、轉(zhuǎn)移函數(shù)分子系數(shù)、轉(zhuǎn)移函數(shù)分母系數(shù),;“階數(shù)”菜單用來計算所輸入?yún)?shù)濾波器的階數(shù),,并將它輸出到輸出參數(shù)框,。在程序的設(shè)計中,首先判斷用戶所選擇濾波器的類型,,然后將計算出的參數(shù)用set函數(shù)輸出到輸出文本區(qū),。因為極點、零點值可能為復(fù)數(shù),,而文本編輯框的數(shù)據(jù)類型為數(shù)值型,,所以在輸出時,利用num2str函數(shù)將得到的值進行格式轉(zhuǎn)化,,以防止出現(xiàn)復(fù)數(shù)值只能顯示出實部來,。“階數(shù)”菜單程序如下:
“階數(shù)”、“零點”,、“極點”,、“增益”、“轉(zhuǎn)移函數(shù)分子系數(shù)”,、“轉(zhuǎn)移函數(shù)分母系數(shù)”子菜單中回調(diào)函數(shù)的程序設(shè)計基本一樣,,只是在輸出值時參數(shù)名稱不同。將階數(shù)子菜單程序中set語句的“n”換成相應(yīng)菜單對應(yīng)的變量名即可實現(xiàn)相應(yīng)的功能,。在完成了各個控件的回調(diào)函數(shù)編寫后,,對軟件的功能進行逐一調(diào)試,以保證每項功能都能正確響應(yīng)用戶的操作,。
4.3 代碼優(yōu)化
在調(diào)試完軟件的各項功能后,,應(yīng)對所設(shè)計的軟件代碼進行優(yōu)化。打開軟件中使用次數(shù)比較多的程序段,,利用Matlab中的程序執(zhí)行耗時剖析功能函數(shù) profile指令對程序中執(zhí)行耗時情況進行分析,,之后進行改進,以提高執(zhí)行效率,。打開設(shè)計出的軟件主程序M文件,,對已經(jīng)優(yōu)化過且使用次數(shù)較多的程序段,應(yīng)另外編寫成函數(shù)形式,,供需要的控件回調(diào)函數(shù)調(diào)用,,在需要調(diào)用的相關(guān)控件回調(diào)函數(shù)下只需要填寫相應(yīng)的函數(shù)名稱就能實現(xiàn)其相應(yīng)的功能。
對于在界面設(shè)計時沒有用到的控件,,對應(yīng)生成的代碼可以直截刪去,。最后在Matlab環(huán)境下,運行該程序,,即可實現(xiàn)模擬帶通濾波器的設(shè)計和性能分析,。利用該軟件對模擬帶通濾波器進行了分析,其部分結(jié)果如圖4、圖5所示,。
圖4為切比雪夫2型模擬帶通濾波器的幅頻特性和極點分析計算結(jié)果,;圖5為切比雪夫 1型模擬帶通濾波器零極點分析計算結(jié)果。分析結(jié)果表明,,該軟件有助于模擬帶通濾波器的分析設(shè)計,。
5 結(jié) 語
該文在分析模擬濾波器設(shè)計理論的基礎(chǔ)上,設(shè)計了基于Matlab GUI的模擬帶通濾波器設(shè)計軟件,。利用該軟件可以分析濾波器的幅頻特性,、相頻特性和零,極點分布特性等,。如何將該課題的研究與實際的模擬濾波器設(shè)計整合在一起,,將是下一步面臨的重要工作。同時也可利用該設(shè)計方法設(shè)計功能更大的濾波器分析設(shè)計軟件,,使該軟件具有更大的實用價值,。