基于MATLAB GUI的“濾波器設計軟件”設計

上傳人:仙*** 文檔編號:29355208 上傳時間:2021-10-07 格式:DOC 頁數:50 大?。?93.50KB
收藏 版權申訴 舉報 下載
基于MATLAB GUI的“濾波器設計軟件”設計_第1頁
第1頁 / 共50頁
基于MATLAB GUI的“濾波器設計軟件”設計_第2頁
第2頁 / 共50頁
基于MATLAB GUI的“濾波器設計軟件”設計_第3頁
第3頁 / 共50頁

下載文檔到電腦,查找使用更方便

15 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《基于MATLAB GUI的“濾波器設計軟件”設計》由會員分享,可在線閱讀,更多相關《基于MATLAB GUI的“濾波器設計軟件”設計(50頁珍藏版)》請在裝配圖網上搜索。

1、 MATLAB課程設計報告 基于MATLAB GUI的“濾波器設計軟件”設計 47 摘 要 面對龐雜繁多的原始信號, 如何提取所需信號、抑制不需要的信號這就需要使用濾波器。濾波器的作用主要是選擇所需頻帶的信號內容而抑制不需要的其他頻帶的信號內容。數字濾波器因其精度高、可靠性好、靈活性大等優(yōu)點, 在語音信號處理、信號頻譜估計、信號去噪、無線通信中的數字變頻以及圖像處理等工程實際應用中都很廣泛。根據其沖擊響應函數的時域特性可將數字濾波器分為IIR(有限長沖擊響應)和FIR(無限長沖擊響應)。作為強大的計

2、算軟件, MATLAB提供了編寫圖形用戶界面的功能。所謂圖形用戶界面, 簡稱為GUI, 是由各種圖形對象, 如圖形窗口菜單按鈕、文本框等構建的用戶界面。 MATALB 可以創(chuàng)建圖形用戶界面GUI ( GraphicalUser Interface) ,它是用戶和計算機之間交流的工具。MATLAB 將所有GUl 支持的用戶控件都集成在這個環(huán)境中并提供界面外觀、屬性和行為響應方式的設置方法,隨著版本的提高,這種能力還會不斷加強。而且具有強大的繪圖功能,可以輕松的獲得更高質量的曲線圖。 關鍵詞:MATLAB GUI IIR濾波器 FIR濾波器 目 錄 1設計任務 1 2 MATLA

3、B GUI的簡介 2 3 濾波器設計原理 3 3.1濾波器概述 3 3.2 IIR數字濾波器 4 3.2.1 IIR數字濾波器設計原理 4 3.2.2 IIR濾波器設計思想 5 3.2.3 IIR濾波器設計編程實現 6 3.3 FIR數字濾波器 8 3.3.1 FIR數字濾波器設計原理 8 3.3.2 FIR濾波器設計思想 9 4 基于Matlab GUI的數字濾波器設計思路及實現 12 4. 1 GUI界面設計概述 12 4.2 “濾波器設計軟件”設計所實現任務 14 4.3 基于Matlab GUI的數字濾波器設計實現 16 4.3.1 “濾波器設

4、計軟件”GUI界面設計 16 4.3.2 “濾波器設計軟件”回調函數編寫 17 4.3.3AutoChoose.m程序的編寫 22 4.4 運行和結果顯示 28 5 設計總結和心得 33 5.1 設計總結 33 5.2 設計心得 34 Abstract 35 參考文獻 36 附錄 1設計任務 1 設計目的 1.鞏固所學習過的關于數字信號處理的濾波器的設計 2.學習使用MATLAB GUI設計工具應用平面 2 設計要求 要求:“濾波器設計軟件”設計 1、要有人機交互界面。 2、濾波器設計的類型、參數均有多個值可供選擇。 3、當用戶選擇(或輸入)濾

5、波器的參數時,能夠及時顯示設計好的濾波器的頻譜。 4、該軟件可設計FIR或IIR型濾波器至少一種。 2 MATLAB GUI的簡介   MATLAB 是美國MathWorks公司出品的商業(yè)數學軟件,用于算法開發(fā)、數據可視化、數據分析以及數值計算的高級技術計算語言和交互式環(huán)境,主要包括MATLAB和Simulink兩大部分。   MATLAB是矩陣實驗室(Matrix Laboratory)的簡稱,和Mathematica、Maple并稱為三大數學軟件。它在數學類科技應用軟件中在數值計算方面首屈一指。M

6、ATLAB可以進行矩陣運算、繪制函數和數據、實現算法、創(chuàng)建用戶界面、連接其他編程語言的程序等,主要應用于工程計算、控制設計、信號處理與通訊、圖像處理、信號檢測、金融建模設計與分析等領域。   MATLAB的基本數據單位是矩陣,它的指令表達式與數學、工程中常用的形式十分相似,故用MATLAB來解算問題要比用C,FORTRAN等語言完相同的事情簡捷得多,并且mathwork也吸收了像Maple等軟件的優(yōu)點,使MATLAB成為一個強大的數學軟件。在新的版本中也加入了對C,FORTRAN,C++ ,JAVA的支持??梢灾苯诱{用,用戶也可以將自己編寫的實用程序導入到MATLAB函數庫中方便自己以后調用

7、。 MATALB 可以創(chuàng)建圖形用戶界面GUI ( GraphicalUser Interface) ,它是用戶和計算機之間交流的工具。MATLAB 將所有GUl 支持的用戶控件都集成在這個 環(huán)境中并提供界面外觀、屬性和行為響應方式的設置方法,隨著版本的提高,這種能力還會不斷加強。而且具有強大的繪圖功能,可以輕松的獲得更高質量的曲線圖。 3 濾波器設計原理 3.1濾波器概述 隨著信息時代和數字世界的到來,數字信號處理已成為當今一門極其重要的學科和技術領域。數字信號處理在通信、語音、圖像,自動控制、雷達、軍事、航空航天、醫(yī)療和家用電器等眾多領域得到了廣泛

8、的應用。在數字信號處理中,數字濾波器占有極其重要的地位?,F代數字濾波器可以用軟件或設計專用的數字處理硬件兩種方式來實現,用軟件來實現數字濾波器優(yōu)點是隨著濾波器參數的改變,很容易改變?yōu)V波器的性能。根據數字濾波器單脈沖響應的時域特性可將數字濾波器分為兩種, 即IIR (Infinite Impulse Response)無限長脈沖響應數字濾波器和FIR (Finite Impulse Response)有限長脈沖響應數字濾波器。從功能上分類, 可分為低通、高通、帶通、帶阻濾波器。 3.2 IIR數字濾波器 3.2.1 I

9、IR數字濾波器設計原理 濾波器的設計質上是尋找一個既能物理實現,又能滿足給定頻率特性指標要求的系統(tǒng)傳輸函數。IIR濾波器一般采用遞歸型的結構,系統(tǒng)的輸入與輸出服從N階差分方程: 相應的傳輸函數為: 設計IIR數字濾波器就是要確定傳輸函數中的系數、或零極點增益、、A,使濾波器的頻率特性滿足給定的性能指標要求。設計原理主要包括兩個方面:一是根據設計指標,先設計出相應的模擬濾波器再通過脈沖響應不變法或雙線性變換法轉換成對應的數字濾波器;二是選擇一種優(yōu)準則,如最小均方準則,再在 , 先最誤差此準則下求出濾波器傳輸函數的系數。根據設計理論,在MATLAB環(huán)境下設計IIR數字濾

10、波器主要有四種方法:一是典型設計法;二是完全設計法;三是最優(yōu)設計法;四是工具設計法。由于完全設計法程序簡單,我們在這里利用完全設計法設計濾波器。 3.2.2 IIR濾波器設計思想 IIR濾波器設計思想是:利用已有的模擬濾波器設計理論,首先根據設計指標設計一個合適的模擬濾波器,然后再通過脈沖響應不變法或雙線性變換法,完成從模擬到數字的變換。常用的模擬濾波器有巴特沃斯(Butterworth)濾波器、切比雪夫(Chebyshev) 濾波器、橢圓(Ellipse)濾波器、貝塞爾(Bessel)濾波器等,這些濾波器各有特點,供不同設計要求選用。濾波器的模擬數字

11、變換,通常是復變函數的映射變換,也必須滿足一定的要求 由于數字濾波器傳輸函數只與頻域的相對值有關,故在設計時可先將濾波器設計指標進行歸一化處理,設采樣頻率為Fs,歸一化頻率的計算公式是: 利用完全設計法設計數字濾波器的步驟: (1)將設計指標歸一化處理。 (2)根據歸一化頻率,確定最小階數N 和頻率參數Wn??晒┻x用的階數選擇函數有:buttord,cheblord,cheb2ord,ellipord 等。 (3)運用最小階數N 設計模擬低通濾波器原型。根據最小階數直接設計模擬低通濾波器原型,用到的函數有:butter, chebyl,cheby2, ellip 和be

12、ssel。如[B,A] = butter(N,Wn,type) 設計type型巴特沃斯(Butterworth)濾波器filter。N為濾波器階數,Wc為截止頻率, type決定濾波器類型, type= high,設計高通IIR濾波器,ftype= stop,設計帶阻IIR濾波器。 (4)再用freqz 函數驗證設計結果。 3.2.3 IIR濾波器設計編程實現 例如選擇設計IIR的Butterworth低通濾波器,其Fs=22050Hz,Fp1=3400Hz, Fs1=5000Hz,Rp=2dB,Rs=20dB 程序和效果圖(圖2)如下: Fs=

13、22050;Fp1=3400;Fs1=5000;Rp=3;Rs=20;%設計指標 wp1=2*Fp1 /Fs;ws1=2*Fs1 /Fs;%求歸一化頻率 % 確定butterworth 的最小階數N 和頻率參數Wn [n,Wn]=buttord(wp1,ws1,Rp,Rs); [B,A] = butter(N,Wn);%確定傳遞函數的分子、分母系數 [h,f]=freqz(b,a,Nn,Fs_value);%生成頻率響應參數 plot(f,20*log(abs(h))) %畫幅頻響應圖 plot(f,angle(h)); %畫相頻響應圖 %[N, Wn] = butto

14、rd(Wp, Ws, Rp, Rs) 確定butterworth 的N 和Wn %[N, Wn] = cheblord ( (Wp, Ws, Rp, Rs) 確定Chebyshev濾波器的N 和Wn %[N, Wn] = cheb2ord (Wp, Ws, Rp, Rs) 確定Chebyshev2濾波器的N 和Wn %[N, Wn] = ellipord (Wp, Ws, Rp, Rs) 確定橢圓(Ellipse) 濾波器 的N 和Wn %[B,A] = butter(N,Wn,type) 設計type型巴特沃斯(Butterworth)濾波器filter. %[B,A] = che

15、by1 (N,R,Wn, type) 設計type型切比雪夫Ⅰ濾波器filter. %[B,A] = cheby2(N,R,Wn, type) 設計type型切比雪夫Ⅱ濾波器filter. %[B,A] = ellip(N,Rp,Rs,Wn, type) 設計type 型橢圓filter. 圖 2 Butterworth低通濾波器 3.3 FIR數字濾波器 3.3.1 FIR數字濾波器設計原理 根據數字濾波器沖激響應的時域特征,可將數字濾波器分為2種,即無限長沖激響應濾波器( IIR DF)和有限

16、長沖激響應濾波器( F IR DF) 。F IR DF具有突出的優(yōu)點:系統(tǒng)總是穩(wěn)定的、易于實現線性相位、允許設計多通帶(或多阻帶)濾波器。因此F IR DF在數字信號處理中得到廣泛的應用。但與IIR DF相比,在滿足同樣的阻帶衰減的情況下需要較高的階數。濾波器階數越高將占用更多的DSP運算時間。因此,對F IR DF的設計目標是在滿足指標要求的情況下盡量減少濾波器的階數。數字濾波器可以理解為是一個計算程序或算法,將代表輸入信號的數字時間序列轉化為代表輸出信號的數字時間序列,并在轉化過程中,使信號按預定的形式變化。FIR DF的沖激響應h ( k)是有限長的M 階F IR DF系統(tǒng)函數可表示為

17、 濾波器的輸出 它的設計問題實質上是確定能滿足所要求的轉移序列或脈沖響應的常數問題,設計方法主要有窗函數法、頻率采樣法和等波紋最佳逼近法等。若要逼近的理想濾波器的頻率響應為常用的有巴特沃思濾波器、切比雪夫型濾波器、橢圓濾波器和巴塞爾濾波器。 3.3.2 FIR濾波器設計思想 在這里我們利用窗函數法設計FIR濾波器。窗函數法的基本想法是選取某一種合適的理想頻率選擇性濾波器(這種濾波器總是有一個非因果,無限長的脈沖響應),然后將它的脈沖響應截斷(或加窗)以得到一個線形相位和因果的FIR濾波器。因此,這種方法的重點在于選擇某種恰當的窗函數和一種合適

18、的理想濾波器。 窗函數法又稱傅立葉級數法, 一般是先給定所要求的濾波器的頻率響應Hd ( ejw) , 要求設計一個FIR 濾波器的頻率響應H( ejw) 來逼近Hd( ejw) .設計是在時域進行的, 首先由傅立葉變換導出hd( n) , 因此hd( n) 一定是無限長的序列, 而h( n) 是有限長的, 即要用有限長的h( n) 來逼近無限長的hd( n) , 最有效的方法是截斷hd ( n) , 或者說用一個有限長的窗口函數w( n) 來截取hd( n) , 即: h( n) = hd( n) w( n) , 因而窗函數的形狀及長度的選擇就很關鍵了. 在MATLAB 中常用的窗函數有矩

19、形窗, Hanning 窗, Hamming 窗, Blackman 窗,Kaiser 窗等, 這些窗函數各有優(yōu)缺點, 各有利弊, 默認值是Hamming 窗。 利用完全設計法設計數字濾波器的步驟: (1)將設計指標歸一化處理。 (2)根據歸一化頻率,選擇函數buttord確定最小階數N 和頻率參數Wn。 (3)確定窗口值。Windows指定窗函數類型,默認為Hamming窗;可選Hanning、Hamming、Blackman、triangle、bartlett等窗,每種窗都可以由Matlab的相應函數生成。 (4)確定傳遞函數的分母系數。函數fir1的調用格式為B= fir1

20、(n, Wn, ftype, Windows),同時選擇在此函數中選擇要設計的濾波器的類型。其中,n為濾波器階數,Wc為截止頻率ftype決定濾波器類型,ftype= high,設計高通FIR濾波器,ftype= stop,設計帶阻FIR濾波器。 (5)再用freqz 函數驗證設計結果。 3.3.3 FIR濾波器設計編程實現 例如選擇設計FIR的Blackman窗的低通濾波器,其Fs=22050Hz,Fp1=3400Hz,Fs1=5000Hz,Rp=2dB,Rs=20dB 程序和效果圖(圖 3)如下: Fs=22050;Fp1=3400;Fs1=5000;Rp=3;Rs=20;n

21、=75;%設計指標 wp1=2*Fp1 /Fs;ws1=2*Fs1 /Fs;%求歸一化頻率 % 確定的最小階數N 和頻率參數Wn [n,Wn]=buttord(wp1,ws1,Rp,Rs); [b,a] = butter(N,Wn);%確定傳遞函數的分子、分母系數 w=blackman(n+1); %確定窗口值 % w=boxcar(n+1); % w=bartlett(n+1); % w=triang(n+1); % w=hanning(n+1); % w=hamming(n+1); b=fir1(n,wn,w);% 確定傳遞函數的分母系數 [h,f]=freqz(b

22、,1); %生成頻率響應參數 plot(f,20*log(abs(h))) %畫幅頻響應圖 plot(f,angle(h)); %畫相頻響應圖 圖 3 Blackman窗低通濾波器 4 基于Matlab GUI的數字濾波器設計思路及實現 4. 1 GUI界面設計概述 GUI設計面板是GUI設計工具應用的平面,面板上部提供了菜單和常用工具按鈕,左邊提供了多種如命令按鈕、單選按鈕、可編輯文本框、靜態(tài)文本框、彈出式菜單等。進行設計時, 首先單擊面板左邊所需的控件, 然后在右邊的圖形界面編輯

23、區(qū)中再次單擊某一恰當位置, 這時將在該位上為圖形界面添加相應的控件。一個圖形界面的完成, 除了設計其外觀外, 還有相當的一部分是通過屬性的設來完成的。因此在設置這些屬性時, 要注意下面幾個常用又很重要的屬性設置: 1、控件風格和外觀 (1)BackgroundColor:設置控件背景顏色,使用[R G B]或顏色定義。 (2)CData:在控件上顯示的真彩色圖像,使用矩陣表示。 (3)ForegroundColor:文本顏色。 (4)String屬性:控件上的文本,以及列表框和彈出菜單的選項。 (5)Visible:控件是否可見。 2、對象的常規(guī)信息

24、 (1)Enable屬性: 表示此控件的使能狀態(tài),設置為on”,表示可選,為“off”時則表示不可選。 (2)Style:控件對象類型。 (3)Tag:控件表示(用戶定義)。 (4)TooltipString屬性:提示信息顯示。當鼠標指針位于此控件上時,顯示提示信息。 (5)UserData:用戶指定數據。 (6)Position:控件對象的尺寸和位置。 (7)Units:設置控件的位置及大小的單位 (8)有關字體的屬性,如 FontAngle, FontName等。 3、控件回調函數的執(zhí)行 (1)BusyAction:處理回調函數的中

25、斷。有兩種選項:即Cancel:取消中斷事件,queue:排隊(默認設置)。 (2)ButtonDownFcn屬性:按鈕按下時的處理函數。 (3)CallBack屬性:是連接程序界面整個程序系統(tǒng)的實質性功能的紐帶。該屬性值應該為一個可以直接求值的字符串,在該對象被選中和改變時,系統(tǒng)將自動地對字符串進行求值。 (4)CreateFcn:在對象產生過程中執(zhí)行的回調函數。 (5)DeleteFcn:刪除對象過程中執(zhí)行的回調函數。 (6)Interruptible屬性:指定當前的回調函數在執(zhí)行時是否允許中斷,去執(zhí)行其他的函數。 4、控件當前狀態(tài)信息 (1)Li

26、stboxTop:在列表框中顯示的最頂層的字符串的索引。 (2)Max:最大值。 (3)Min:最小值。 (4)Value:控件的當前值。 應用MATLAB制作這樣一個過程是非常方便的, 我們可以通過GUI操作來看到。該環(huán)境下要設計一個界面友好的仿真軟件,一般應完成以下兩個步驟: (1)GUI界面設計。主要是通過不同的文本框、按鈕等許多工具的使用,設計出一個圖形用戶界面。要清楚這個圖形界面的功能是什么,即在圖形界面上的操作會引發(fā)什么樣的結果。 (2)回調函數的設計。用戶應根據設計好的圖形界面的功能,針對各個不同的圖形對象來編寫出能夠實現該功能的函數代碼,確保這個圖形

27、界面能夠完成所預定的功能。 4.2 “濾波器設計軟件”設計所實現任務 “濾波器設計軟件”設計所實現任務如下: 1、能夠實現人機交互 2、在下拉Digital Filter菜單里選擇IIR和FIR濾波器設計 3、當選擇IIR濾波器時,能夠選擇巴特沃斯(Butterworth)、切比雪夫Ⅰ(ChebyshevⅠ)濾波器、切比雪夫Ⅱ(ChebyshevⅡ)濾波器、橢圓(Ellipse)濾波器 4、當選擇FIR濾波器是,能夠選擇Boxar、Bartlett、Blackman、Hanning、Hamming、Kaiser窗口設計濾波器 5、在下拉菜單F

28、ilter Type中選擇濾波器類型,能夠選擇Lowpass、Highpass、Bandpass、Bandstop四種類型 6、在下拉菜單Display Type中選擇圖形顯示類型,能夠選擇Linear、Logarithmic兩種類型 7、在設計濾波器階數時,可選擇自定義階數和利用最小階數設計濾波器,并顯示最小階數 8、在參數輸入中,可輸入抽樣頻率Fs、濾波器通帶臨界頻率(Fp1、Fp2)、濾波器阻帶臨界頻率(Fst1、Fst2)、通帶內的最大衰減Rp、通帶內的最小衰減Rs 9、設計的濾波器的幅頻響應和幅頻響應顯示在界面中 MATLAB中的屬性控制非常多, 要設置哪些對象的屬性

29、, 哪些可以不設置, 都需針對具體問題具體分析解決。接下來再通過控件布置編輯器來設置控件的對齊方式及間距等, 以完善界面功能。按要求設計好的“濾波器設計軟件”主面板見圖4, 共包括5個區(qū)域: (1)圖形區(qū):用于顯示各模塊的仿真曲線 (2)參數設區(qū):由個靜態(tài)文本框和個編輯框以及類型選擇按紐組成, 實時的進行系統(tǒng)參數的設定和濾波器原型的選定 (3)對象模型區(qū):由下拉菜單選定數字濾波器類型, 當用戶的輸人參數發(fā)生變化時, 可通過單擊響應的“ Run”按鈕, 實現設計結果的實時刷新與顯示 (4)數據顯示區(qū):對應于圖形顯示結果, 實時顯示濾波器階次和分子分母多項式系數。 圖 4 “濾波

30、器設計軟件”主面板 4.3 基于Matlab GUI的數字濾波器設計實現 4.3.1 “濾波器設計軟件”GUI界面設計 在matlab命令行窗口中輸入guide或點擊matlab界面上面的菜單中的圖標,打開gui設計的圖形界面如圖5 。然后拖入所要的圖形控件,按需要修改外觀和空間屬性,直至滿足要求,如圖6。設置屬性點擊guide界面上方的Run按鈕,會生成一個fig文件,一個m文件,其中fig文件就是界面的圖形,m文件是界面的回調函數,在m文件里每個控件的回調函數都已經自動生成,控件要做的工作就是在文件框架下定義某些特殊要求的狀態(tài)并補充完整回調函數

31、場, 使單擊控件時激活回調程序完成一定的功能。 圖 5 GUI設計的圖形界面 圖6 “濾波器設計軟件”GUI界面設計 4.3.2 “濾波器設計軟件”回調函數編寫 設計總框圖如圖7所示 圖7 設計總框圖 1、Digital Filter下拉菜單 在下拉Digital Filter菜單里選擇IIR和FIR濾波器設計 選擇IIR或者FIR屏蔽相應的選項,當選擇IIR選項時,使FIR的Windows的選擇窗口不能使用,程序和效果圖(圖8 、圖9 )如下:

32、 function DigitalFilter_Callback(hObject, eventdata, handles) %讀取此時選擇的濾波器選擇,“IIR、FIR” DigitalFilter_value=get(handles.DigitalFilter,Value); %當選擇了IIR時,使窗口選項屏蔽 if(DigitalFilter_value==1) set(handles.FilterDesign,enable

33、,on); set(handles.Windows,enable,off) %當選擇了FIR時,使IIR的濾波器(Butterworth、 ChebyshevⅠ等)選項屏蔽 else set(handles.FilterDesign,enable,off); set(handles.Windows,enable,on) end 圖8 IIR濾波器選擇

34、 圖 9 FIR濾波器選擇 2、Filter Type下拉菜單 在下拉菜單Filter Type中選擇濾波器類型 選擇低通或者高通濾波器時,隱藏相應的帶通和帶阻的第二個臨界頻率,使其頻率參數不能輸入,程序和效果圖(圖10 、圖11 )如下: function FilterType_Callback(hObject, eventdata, handles) %讀取此時設計的濾波器的類型,“Lowpass、Highpass、Bandpass、Bandstop” FilterType_value=get(handles.FilterType

35、,Value); %當選擇Lowpass或者Highpass,屏蔽相應的臨界頻率的顯示 if((FilterType_value==1)||(FilterType_value==2)) set(handles.Fp2,visible,off);set(handles.Fs2,visible,off); set(handles.text17,visible,off);set(handles.text19,visible,off); set(handl

36、es.text6,visible,off);set(handles.text10,visible,off); else %當選擇Bandpass或者Bandstop,使相應的臨界頻率的顯示,使參數能夠輸入 if((FilterType_value==3)||(FilterType_value==4)) set(handles.Fp2,visible,on);set(handles.Fs2,visible,on); se

37、t(handles.text17,visible,on);set(handles.text19,visible,on); set(handles.text6,visible,on);set(handles.text10,visible,on); end end 圖10低通、高通濾波器頻率參數輸入 圖11 低通、高通濾波器頻率參數輸入 3、Min Order和Custom Orde按鈕 在設計濾波器階數時,可選擇自定義階數和利用最小階數設計濾波器,并顯示最

38、小階數 ,這里涉及的控件Min Order和Custom Order,其回調函數如下: (1)按鈕Min Order 選擇使用最小階數設置時,屏蔽自定義階數的輸入,如圖12: function MinOrder_Callback(hObject, eventdata, handles) MinOrder_value=get(handles.MinOrder,Value); if(MinOrder_value==1) set(handles.Order,visi

39、ble,off); else set(handles.Order,visible,on); end (2)按鈕Custom Order 選擇自定義階數時,顯示階數輸入框,如圖13 function CustomOrderButton_Callback(hObject, eventdata, handles) CustomOrderButton_value=get(handles.CustomOrderButton,Value);

40、 if(CustomOrderButton_value==0) set(handles.Order,visible,off); else set(handles.Order,visible,on); end (3)其中涉及Run控件中的程序如下: ①顯示最小階數 set(handles.MinOrderDisplay,strin

41、g,num2str(n)) ②當選擇了自定義階數時,讀取自定義階數 if(MinOrder_value==0) n=str2double(get(handles.Order,String)) end 圖12 使用最小階數設計Filter 圖13 使用自定義階數設計Filter 4、Fp1、Fp2、Fst1、Fst2文本編輯框 參數輸入時,在輸入抽樣頻率Fs的前提下,判斷濾波器通帶臨界頻率(Fp1、Fp2)、濾波器阻帶臨界頻率(Fst1、Fst2)的歸一化頻率wp1、 wp2、ws1、ws1是否在[0,1]之間,如不正確顯示錯

42、誤對話框,其程序和效果圖(圖14)如下: function Fp1_Callback(hObject, eventdata, handles) %檢查輸入的通帶臨界頻率Fp1的歸一化頻率是否在[0,1]之間 Fs_value=str2double(get(handles.Fs,String)); Fp1_value=str2double(get(handles.Fp1,String)); wp1=2*Fp1_value/Fs_value; %如果不在[0,1]之間,顯示輸入錯誤對話框 if(wp1>=1) errordlg(‘wp1=2*Fp1/Fs,歸一化頻率不在

43、【0,1】之間,請輸入正確的參數’,‘錯誤信息’) end 圖 14 輸入參數錯誤信息框顯示 Fp2、Fst1、Fst2的回調函數同理編程 5、Run按鈕 根據輸入的參數顯示設計的濾波器的幅頻特性和相頻特性圖,其程序如下: function Run_Callback(hObject, eventdata, handles) %點擊Run立即運行AutoChoose,m文件,實現濾波器設計程序 AutoChoose(handles) 6、Auto Run按鈕 當選擇了Auto Run按鈕時,能夠根據所選的IIR的濾波器(Butterworth、 Cheb

44、yshevⅠ等)、FIR的窗口選項、圖形顯示類型(Linear、Logarithmic)立即顯示濾波器的幅頻特性和相頻特性圖,其中IIR的濾波器(Butterworth、 ChebyshevⅠ等)的回調函數程序如下: function FilterDesign_Callback(hObject, eventdata, handles) AutoRun_value=get(handles.AutoRun,Value); %當選擇了Filter(Butterworth、 ChebyshevⅠ等)中一種Filter運行AutoChoose,m文件 if(AutoRun_value==

45、1) AutoChoose(handles) end 7、Quit按鈕 退出濾波器設計窗口,其程序如下: function Quit_Callback(hObject, eventdata, handles) %點擊Quti按鈕退出 Close 4.3.3AutoChoose.m程序的編寫 function AutoChoose(handles) Nn=128; DigitalFilter_value=get(handles.DigitalFilter,Value); FilterDesign_value=get(handles.Fil

46、terDesign,Value); Windows_value=get(handles.Windows,Value); FilterType_value=get(handles.FilterType,Value); DisplayType_value=get(handles.DisplayType,Value); Order_value=get(handles.Order,Value); Rp_value=str2double(get(handles.Rp,String)); Rs_value=str2double(get(handles.Rs,String)); Fs_valu

47、e=str2double(get(handles.Fs,String)); Fp1_value=str2double(get(handles.Fp1,String)); Fp2_value=str2double(get(handles.Fp2,String)); Fs1_value=str2double(get(handles.Fs1,String)); Fs2_value=str2double(get(handles.Fs2,String)); wp1=2*Fp1_value/Fs_value;wp2=2*Fp2_value/Fs_value; ws1=2*Fs1_value/F

48、s_value;ws2=2*Fs2_value/Fs_value; wp=[wp1,wp2];ws=[ws1,ws2]; if(DigitalFilter_value==1) if(FilterDesign_value==1) if((FilterType_value==1)||(FilterType_value==2)) [n,Wn]=buttord(wp1,ws1,Rp_value,Rs_value); set(handles.MinOrderDisplay,string,num2str(n)) els

49、e if((FilterType_value==3)||(FilterType_value==4)) [n,Wn]=buttord(wp,ws,Rp_value,Rs_value); set(handles.MinOrderDisplay,string,num2str(n)) end end else if(FilterDesign_value==2) if((FilterType_value==1)||(FilterTy

50、pe_value==2)) [n,Wn]=cheb1ord(wp1,ws1,Rp_value,Rs_value); set(handles.MinOrderDisplay,string,num2str(n)) else if((FilterType_value==3)||(FilterType_value==4)) [n,Wn]=cheb1ord(wp,ws,Rp_value,Rs_value);

51、 set(handles.MinOrderDisplay,string,num2str(n)) end end else if(FilterDesign_value==3) if((FilterType_value==1)||(FilterType_value==2)) [n,Wn]=cheb2ord(wp1,ws1,Rp_value,Rs_value); set

52、(handles.MinOrderDisplay,string,num2str(n)) else if((FilterType_value==3)||(FilterType_value==4)) [n,Wn]=cheb2ord(wp,ws,Rp_value,Rs_value); set(handles.MinOrderDisplay,string,num2str(n)) end

53、 end else if(FilterDesign_value==4) if((FilterType_value==1)||(FilterType_value==2)) [n,Wn]=ellipord(wp1,ws1,Rp_value,Rs_value); set(handles.MinOrderDisplay,string,num2str(n)) else if((FilterT

54、ype_value==3)||(FilterType_value==4)) [n,Wn]=ellipord(wp,ws,Rp_value,Rs_value); set(handles.MinOrderDisplay,string,num2str(n)) end end end end end end else if(DigitalFilt

55、er_value==2) if((FilterType_value==1)||(FilterType_value==2)) [n,Wn]=buttord(wp1,ws1,Rp_value,Rs_value); set(handles.MinOrderDisplay,string,num2str(n)) else if((FilterType_value==3)||(FilterType_value==4)) [n,Wn]=buttord(wp,ws,Rp_value,

56、Rs_value); set(handles.MinOrderDisplay,string,num2str(n)) end end end end MinOrder_value=get(handles.MinOrder,Value); if(MinOrder_value==0) n=str2double(get(handles.Order,String)) end switch DigitalFilter_value %數字濾波器IIR或者FIR選擇 case 1 %選擇I

57、IR濾波器 switch FilterDesign_value%IIR中Butterworth、Chebyshev1、Chebyshev2、Ellipise濾波器 case 1 %選擇Butterworth濾波器 switch FilterType_value%選擇濾波器類型 case 1 %低通濾波器 [b,a]=butter(n,Wn); [h,f]=freqz(b,a,Nn,Fs_value); axes(handles.Magnitude); %把下面程序得到的圖畫在Magazine if

58、(DisplayType_value==1) %選擇Linear畫幅頻圖 plot(f,abs(h)) %畫幅頻圖 else plot(f,20*log10(abs(h))) %選擇Logarithmic畫幅頻圖 end grid on; axes(handles.Phase); %把下面程序得到的圖畫在Phase plot(f,angle(h)); %畫相頻圖 grid on; case 2 %高通濾波器

59、 [b,a]=butter(n,Wn,high); [h,f]=freqz(b,a,Nn,Fs_value); axes(handles.Magnitude); if(DisplayType_value==1) plot(f,abs(h)) else plot(f,20*log10(abs(h))) end grid on; axes(handles.Ph

60、ase);plot(f,angle(h));grid on; case 3 %帶通濾波器 [b,a]=butter(n,Wn); [h,f]=freqz(b,a,Nn,Fs_value); axes(handles.Magnitude); if(DisplayType_value==1) plot(f,abs(h)) else plot(f,20*log10(abs(h))) end grid on;

61、 axes(handles.Phase);plot(f,angle(h));grid on; case 4 %帶阻濾波器 [b,a]=butter(n,Wn,stop); [h,f]=freqz(b,a,Nn,Fs_value); axes(handles.Magnitude); if(DisplayType_value==1) plot(f,abs(h)) else plot(f,20*log10(abs(h))) end

62、 grid on; axes(handles.Phase);plot(f,angle(h));grid on; end case 2 %選擇設計Chebyshev1濾波器 …… case 3 %選擇設計Chebyshev2濾波器 …… case 4 %選擇設計Ellipse濾波器 …… end case 2 %選擇FIR濾波器 switch Windows_value %FIR中的Windows選擇 case 1 %

63、選擇設計boxar濾波器 …… case 2 %選擇設計Bartlett濾波器 …… case 3 %選擇設計Blackman濾波器 …… case 4 %選擇設計hanning濾波器 …… case 5 %選擇設計hamming濾波器 …… case 6 %選擇設計kaiser濾波器 …… end end 4.4 運行和結果顯示 1 運行和結果顯示 在圖形界面下, 按“ 運行” ,出現如圖15 所示界面,選擇要設計的濾波器選項,編輯框中輸人要求設計的數字濾波器的性能指標,, 選擇“Run”命令按鈕,

64、出現如圖所示的模擬低通原型濾波器幅頻響應和相頻響應曲線, 最小階次。當選擇了“Auto Run”按鈕,在“濾波器類型選擇”旁的下拉菜單框中選擇其他類型的濾波器會立刻出現此類型的濾波器的圖形。 例如選擇設計IIR的Butterworth低通濾波器,其Fs=1000Hz,Fp1=100Hz, Fs1=300Hz,Rp=3dB,Rs=20dB,n=4,顯示如圖16 圖15 運行顯示界面 圖 16 Butterworth低通濾波器 2 顯示不同濾波器的顯示結果 1、選擇設計IIR低通濾波器,其Fs=10

65、00Hz,Fp1=100Hz,Fs1=300Hz, Rp=3dB,Rs=20dB,n=4,利用四種不同濾波器進行設計,如圖17、18、19、20顯示: 圖17 Butterworth低通濾波器 圖18 ChebyshevⅠ低通濾波器 圖19 ChebyshevⅡ低通濾波器 圖20 Ellipse低通濾波器 2、選擇設計FIR帶通濾波器,其Fs=4000Hz,Fp1=900Hz,Fp2=1300Hz,Fs1=600Hz, Fs2=1500Hz, Rp=1dB,Rs=40dB,n=20,Rp=3dB,Rs=20dB, n=4,利用四種不同濾波器進行設計,如圖21、22、23、24、25、26顯示: 圖21 Boxar窗帶通濾波器 圖22 Bartlett窗帶通濾波器 圖22 Blackman窗帶通濾波器 圖23 Hanning窗帶通濾波器

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關資源

更多
正為您匹配相似的精品文檔
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網版權所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對上載內容本身不做任何修改或編輯。若文檔所含內容侵犯了您的版權或隱私,請立即通知裝配圖網,我們立即給予刪除!