基于MATLABGUI濾波器設(shè)計.._第1頁
基于MATLABGUI濾波器設(shè)計.._第2頁
基于MATLABGUI濾波器設(shè)計.._第3頁
基于MATLABGUI濾波器設(shè)計.._第4頁
基于MATLABGUI濾波器設(shè)計.._第5頁
已閱讀5頁,還剩62頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

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

2、窗口菜單按鈕、文本框等構(gòu)建的用戶界面。MATALB 可以創(chuàng)建圖形用戶界面 GUI ( GraphicalUser In terface),它是用戶 和計算機(jī)之間交流的工具。MATLAB將所有GUl支持的用戶控件都集成在這 個環(huán)境中并提供界面外觀、屬性和行為響應(yīng)方式的設(shè)置方法,隨著版本的提高,這種能力還會不斷加強。而且具有強大的繪圖功能,可以輕松的獲得更高質(zhì)量的曲 線圖。關(guān)鍵詞:MATLAB GUI IIR濾波器 FIR濾波器目錄1設(shè)計任務(wù) 12 MATLAB GUI 的簡介 23濾波器設(shè)計原理 33.1濾波器概述 33.2 IIR 數(shù)字濾波器 33.2.1 IIR 數(shù)字濾波器設(shè)計原理 33.2

3、.2 IIR 濾波器設(shè)計思想 43.2.3 IIR 濾波器設(shè)計編程實現(xiàn) 53.3 FIR數(shù)字濾波器 73.3.1 FIR 數(shù)字濾波器設(shè)計原理 73.3.2 FIR 濾波器設(shè)計思想 84基于Matlab GUI的數(shù)字濾波器設(shè)計思路及實現(xiàn) 114. 1 GUI界面設(shè)計概述 114.2 “濾波器設(shè)計軟件”設(shè)計所實現(xiàn)任務(wù) 134.3基于Matlab GUI的數(shù)字濾波器設(shè)計實現(xiàn) 154.3.1 “濾波器設(shè)計軟件” GUI界面設(shè)計 154.3.2 “濾波器設(shè)計軟件”回調(diào)函數(shù)編寫 164.3.3AutoChoose.m 程序的編寫 214.4 運行和結(jié)果顯示 275 設(shè)計總結(jié)和心得 325.1設(shè)計總結(jié) 32

4、5.2設(shè)計心得 33Abstract 34參考文獻(xiàn) 35附錄1設(shè)計任務(wù)1設(shè)計目的1. 鞏固所學(xué)習(xí)過的關(guān)于數(shù)字信號處理的濾波器的設(shè)計2. 學(xué)習(xí)使用MATLAB GUI設(shè)計工具應(yīng)用平面2設(shè)計要求要求:“濾波器設(shè)計軟件”設(shè)計1、要有人機(jī)交互界面。2、濾波器設(shè)計的類型、參數(shù)均有多個值可供選擇。3、當(dāng)用戶選擇(或輸入)濾波器的參數(shù)時,能夠及時顯示設(shè)計好的濾波器的 頻譜。4、該軟件可設(shè)計FIR或IIR型濾波器至少一種。62 MATLAB GUI 的簡介MATLAB是美國MathWorks公司出品的商業(yè)數(shù)學(xué)軟件,用于算法開發(fā)、數(shù) 據(jù)可視化、數(shù)據(jù)分析以及數(shù)值計算的高級技術(shù)計算語言和交互式環(huán)境, 主要包括 MA

5、TLAB和Simulink兩大部分。MATLAB 是矩陣實驗室(Matrix Laboratory)的簡稱,和 Mathematica、 Maple并稱為三大數(shù)學(xué)軟件。它在數(shù)學(xué)類科技應(yīng)用軟件中在數(shù)值計算方面首屈一指。MATLAB可以進(jìn)行矩陣運算、繪制函數(shù)和數(shù)據(jù)、實現(xiàn)算法、創(chuàng)建用戶界 面、連接其他編程語言的程序等,主要應(yīng)用于工程計算、控制設(shè)計、信號處理與 通訊、圖像處理、信號檢測、金融建模設(shè)計與分析等領(lǐng)域。MATLAB的基本數(shù)據(jù)單位是矩陣,它的指令表達(dá)式與數(shù)學(xué)、工程中常用的 形式十分相似,故用MATLAB來解算問題要比用C,F(xiàn)ORTRAN等語言完相同 的事情簡捷得多,并且mathwork也吸收了

6、像Maple等軟件的優(yōu)點,使MATLAB 成為一個強大的數(shù)學(xué)軟件。在新的版本中也加入了對C,F(xiàn)ORTRAN,C+ ,JAVA的支持。可以直接調(diào)用,用戶也可以將自己編寫的實用程序?qū)氲?MATLAB 函數(shù)庫中方便自己以后調(diào)用。MATALB 可以創(chuàng)建圖形用戶界面 GUI ( GraphicalUser In terface),它是用戶和 計算機(jī)之間交流的工具。MATLAB將所有GUl支持的用戶控件都集成在這個 環(huán)境中并提供界面外觀、屬性和行為響應(yīng)方式的設(shè)置方法,隨著版本的提高,這種能力還會不斷加強。而且具有強大的繪圖功能,可以輕松的獲得更高質(zhì)量的曲線 圖。3濾波器設(shè)計原理3.1濾波器概述隨著信息時

7、代和數(shù)字世界的到來,數(shù)字信號處理已成為當(dāng)今一門極其重要 的學(xué)科和技術(shù)領(lǐng)域。數(shù)字信號處理在通信、語音、圖像,自動控制、雷達(dá)、軍事、航空航天、醫(yī)療和家用電器等眾多領(lǐng)域得到了廣泛的應(yīng)用。在數(shù)字信號處理中 數(shù)字濾波器占有極其重要的地位?,F(xiàn)代數(shù)字濾波器可以用軟件或設(shè)計專用的數(shù)字 處理硬件兩種方式來實現(xiàn),用軟件來實現(xiàn)數(shù)字濾波器優(yōu)點是隨著濾波器參數(shù)的改 變,很容易改變?yōu)V波器的性能。根據(jù)數(shù)字濾波器單脈沖響應(yīng)的時域特性可將數(shù)字 濾波器分為兩種,即IIR (Infinite Impulse Response無限長脈沖響應(yīng)數(shù)字濾波 器和FIR (Finite Impulse Response有限長脈沖響應(yīng)數(shù)字濾波器

8、。從功能上分類 可分為低通、高通、帶通、帶阻濾波器。3.2 IIR數(shù)字濾波器3.2.1 IIR數(shù)字濾波器設(shè)計原理濾波器的設(shè)計質(zhì)上是尋找一個既能物理實現(xiàn),又能滿足給定頻率特性指標(biāo)要 求的系統(tǒng)傳輸函數(shù)。IIR濾波器一般采用遞歸型的結(jié)構(gòu),系統(tǒng)的輸入與輸出服從N階差分方程:if-0 (其中 0=1)i=Q*=o相應(yīng)的傳輸函數(shù)為:if工b(1-討)乜.VH(-) =N1 + 匸J-lm刊j-i設(shè)計IIR數(shù)字濾波器就是要確定傳輸函數(shù)中的系數(shù) aj、b或零極點增益G、dj、A,使濾波器的頻率特性滿足給定的性能指標(biāo)要求。設(shè)計原理主要包括兩個方面: 一是根據(jù)設(shè)計指標(biāo),先設(shè)計出相應(yīng)的模擬濾波器再通過脈沖響應(yīng)不變法

9、或雙線性 變換法轉(zhuǎn)換成對應(yīng)的數(shù)字濾波器; 二是選擇一種優(yōu)準(zhǔn)則,如最小均方準(zhǔn)則,再在 ,先最誤差此準(zhǔn)則下求出濾波器傳輸函數(shù)的系數(shù)。根據(jù)設(shè)計理論,在MATLAB環(huán)境下設(shè)計IIR數(shù)字濾波器主要有四種方法:一是典型設(shè)計法;二是完全設(shè)計法; 三是最優(yōu)設(shè)計法;四是工具設(shè)計法。由于完全設(shè)計法程序簡單,我們在這里利用 完全設(shè)計法設(shè)計濾波器。322 IIR濾波器設(shè)計思想IIR濾波器設(shè)計思想是:利用已有的模擬濾波器設(shè)計理論,首先根據(jù)設(shè)計指標(biāo)設(shè)計一個合適的模擬濾波器,然后再通過脈沖響應(yīng)不變法或雙線性變換法,完成從模擬到數(shù)字的變換。常用的模擬濾波器有巴特沃斯(Butterworth)濾波器、切比雪夫(Chebyshe

10、v)濾波器、橢圓(Ellipse)濾波器、貝塞爾(Bessel)濾波器等,這 些濾波器各有特點,供不同設(shè)計要求選用。濾波器的模擬數(shù)字變換,通常是復(fù)變 函數(shù)的映射變換,也必須滿足一定的要求由于數(shù)字濾波器傳輸函數(shù)只與頻域的相對值有關(guān),故在設(shè)計時可先將濾波器 設(shè)計指標(biāo)進(jìn)行歸一化處理,設(shè)采樣頻率為Fs,歸一化頻率的計算公式是:m實際模擬角頻率(rad j)實際數(shù)字頻率實際模擬頻率(圧)歸 1匕卿】率=jtxFs氏Fs 2利用完全設(shè)計法設(shè)計數(shù)字濾波器的步驟:(1) 將設(shè)計指標(biāo)歸一化處理。(2) 根據(jù)歸一化頻率,確定最小階數(shù)N和頻率參數(shù) Wn??晒┻x用的階數(shù)選擇 函數(shù)有:buttord,cheblord,

11、 cheb2orc,ellipord 等。(3) 運用最小階數(shù)N設(shè)計模擬低通濾波器原型。根據(jù)最小階數(shù)直接設(shè)計模擬低 通濾波器原型,用到的函數(shù)有:butter, chebyl,cheby2, ellip和besse。如B,A= butter(N,Wn,type)設(shè)計type型巴特沃斯(Butterworth)濾波器filter 0 N為濾波器階 數(shù),Wc為截止頻率,type決定濾波器類型,type= high,設(shè)計高通IIR濾波器,ftype= stop,設(shè)計帶阻IIR濾波器。(4) 再用freqz函數(shù)驗證設(shè)計結(jié)果。323 IIR濾波器設(shè)計編程實現(xiàn)例如選擇設(shè)計IIR的Butterworth低通濾

12、波器,其Fs=22050Hz, Fp仁3400Hz,Fs 仁5000Hz,Rp=2dB,Rs=20dB程序和效果圖(圖2)如下:Fs=22050; Fp仁3400; Fs1=5000; Rp=3; Rs=20; %設(shè)計指標(biāo)wp1=2*Fp1 /Fs; ws1=2*Fs1 /Fs; %求歸一化頻率%確定butterworth的最小階數(shù)N和頻率參數(shù) Wnn, Wn=buttord(wp1,ws1,Rp,Rs);B,A = butter(N,Wn) ; %確定傳遞函數(shù)的分子、分母系數(shù)h,f=freqz(b,a,N n,Fs_value);% 生成頻率響應(yīng)參數(shù)plot(f,20*log(abs(h)

13、% 畫幅頻響應(yīng)圖plot(f,a ngle(h); %畫相頻響應(yīng)圖%N, Wn = buttord(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)設(shè)計type型巴特沃斯(

14、Butterworth)濾波器 filter.%H chebyl (NRWP Type-)wtHypeBs民wI 話藩器 fi_(D. %H cheby2(NRWP 一 ypq)w迸 fypeBs民w二 as=h_(D %pA7e_=p(ZRpR0wp 一 ypq)wtnypQ.Bf=(D函2 Bufferworth蟲鎰話藩3.3 FIR數(shù)字濾波器331 FIR數(shù)字濾波器設(shè)計原理根據(jù)數(shù)字濾波器沖激響應(yīng)的時域特征,可將數(shù)字濾波器分為2種,即無限長沖 激響應(yīng)濾波器(IIR DF)和有限長沖激響應(yīng)濾波器(F IR DF) 。F IR DF具有突出 的優(yōu)點:系統(tǒng)總是穩(wěn)定的、易于實現(xiàn)線性相位、允許設(shè)計多

15、通帶(或多阻帶)濾波器。 因此F IR DF在數(shù)字信號處理中得到廣泛的應(yīng)用。但與IIR DF相比,在滿足同樣的阻帶衰減的情況下需要較高的階數(shù)。濾波器階數(shù)越高將占用更多的DSP運算時間。因此,對F IR DF的設(shè)計目標(biāo)是在滿足指標(biāo)要求的情況下盡量減少濾波器的 階數(shù)。數(shù)字濾波器可以理解為是一個計算程序或算法,將代表輸入信號的數(shù)字時 間序列轉(zhuǎn)化為代表輸出信號的數(shù)字時間序列,并在轉(zhuǎn)化過程中,使信號按預(yù)定的形 式變化。FIR DF的沖激響應(yīng)h ( k)是有限長的M階F IR DF系統(tǒng)函數(shù)可表示為H( z) = 2 h (k) z :濾波器的輸出y(k) =h (k) * x (k) =(i) x(k i

16、f &它的設(shè)計問題實質(zhì)上是確定能滿足所要求的轉(zhuǎn)移序列或脈沖響應(yīng)的常數(shù)問 題,設(shè)計方法主要有窗函數(shù)法、頻率采樣法和等波紋最佳逼近法等。若要逼近的 理想濾波器的頻率響應(yīng)為常用的有巴特沃思濾波器、 切比雪夫型濾波器、橢圓濾 波器和巴塞爾濾波器。15332 FIR濾波器設(shè)計思想在這里我們利用窗函數(shù)法設(shè)計 FIR濾波器。窗函數(shù)法的基本想法是選取某一 種合適的理想頻率選擇性濾波器(這種濾波器總是有一個非因果,無限長的脈沖 響應(yīng)),然后將它的脈沖響應(yīng)截斷(或加窗)以得到一個線形相位和因果的FIR濾波 器。因此,這種方法的重點在于選擇某種恰當(dāng)?shù)拇昂瘮?shù)和一種合適的理想濾波器。窗函數(shù)法又稱傅立葉級數(shù)法,一般是先給

17、定所要求的濾波器的頻率響應(yīng) Hd (ejw),要求設(shè)計一個FIR濾波器的頻率響應(yīng)H( ejw)來逼近Hd( ejw).設(shè)計是在 時域進(jìn)行的,首先由傅立葉變換導(dǎo)出hd( n),因此hd( n) 定是無限長的序列, 而h( n)是有限長的,即要用有限長的h( n)來逼近無限長的hd( n),最有效的方 法是截斷hd ( n),或者說用一個有限長的窗口函數(shù) w( n)來截取hd( n),即:h( n) =hd( n) w( n),因而窗函數(shù)的形狀及長度的選擇就很關(guān)鍵了 .在MATLAB中常 用的窗函數(shù)有矩形窗,Hanning窗,Hamming窗,Blackman窗,Kaiser窗等,這些 窗函數(shù)各有

18、優(yōu)缺點,各有利弊,默認(rèn)值是Hamming窗。N-1產(chǎn))二丫加心皿T/(嚴(yán))h(n)=呎用)何(祁)利用完全設(shè)計法設(shè)計數(shù)字濾波器的步驟:(1) 將設(shè)計指標(biāo)歸一化處理。(2) 根據(jù)歸一化頻率,選擇函數(shù) buttord確定最小階數(shù)N和頻率參數(shù) Wn。(3) 確定窗口值。Windows指定窗函數(shù)類型,默認(rèn)為Hamming窗;可選Hanning、Hamming、Blackman、triangle、bartlett 等窗,每種窗都可以由 Matlab 的相應(yīng)函 數(shù)生成。(4) 確定傳遞函數(shù)的分母系數(shù)。函數(shù) fir1的調(diào)用格式為B= fir1(n, Wn, ftype,Windows),同時選擇在此函數(shù)中選

19、擇要設(shè)計的濾波器的類型。其中, n為濾波器 階數(shù),Wc為截止頻率ftype決定濾波器類型,ftype= high,設(shè)計高通FIR濾波器, ftype= stop,設(shè)計帶阻FIR濾波器。(5) 再用freqz函數(shù)驗證設(shè)計結(jié)果。333 FIR濾波器設(shè)計編程實現(xiàn)例如選擇設(shè)計FIR的Blackman窗的低通濾波器,其Fs=22050Hz,Fp仁3400Hz,F(xiàn)s1=5000Hz,Rp=2dB,Rs=20dB程序和效果圖(圖3)如下:Fs=22050; Fp仁3400; Fs1=5000; Rp=3; Rs=20; n=75;%設(shè)計指標(biāo)wp1=2*Fp1 /Fs; ws1=2*Fs1 /Fs; %求歸一

20、化頻率%確定的最小階數(shù)N和頻率參數(shù)Wnn, Wn=buttord(wp1,ws1,Rp,Rs);b,a = butter(N,Wn) ; %確定傳遞函數(shù)的分子、分母系數(shù)w=blackma n(n+1); % 確定窗口值% w=boxcar( n+1);% w=bartlett( n+1);% w=tria ng(n+1);% w=ha nning(n+1);% w=hammi ng(n+1);b=fir1(n,wn,w);%確定傳遞函數(shù)的分母系數(shù)h,f=freqz(b,1); %生成頻率響應(yīng)參數(shù)plot(f,20*log(abs(h) % 畫幅頻響應(yīng)圖plot(f,angle(h); %畫相頻

21、響應(yīng)圖Fhe Raspo圖3 Blackman窗低通濾波器4基于Matlab GUI的數(shù)字濾波器設(shè)計思路及實現(xiàn)4. 1 GUI界面設(shè)計概述GUI設(shè)計面板是GUI設(shè)計工具應(yīng)用的平面,面板上部提供了菜單和常用工 具按鈕,左邊提供了多種如命令按鈕、單選按鈕、可編輯文本框、靜態(tài)文本框、 彈出式菜單等。進(jìn)行設(shè)計時,首先單擊面板左邊所需的控件,然后在右邊的圖形 界面編輯區(qū)中再次單擊某一恰當(dāng)位置,這時將在該位上為圖形界面添加相應(yīng)的 控件。一個圖形界面的完成,除了設(shè)計其外觀外,還有相當(dāng)?shù)囊徊糠质峭ㄟ^屬性 的設(shè)來完成的。因此在設(shè)置這些屬性時,要注意下面幾個常用又很重要的屬性設(shè) 置:1控件風(fēng)格和外觀(1)Back

22、groundColor:設(shè)置控件背景顏色,使用R G B或顏色定義。(2)CData:在控件上顯示的真彩色圖像,使用矩陣表示。(3)ForegroundColor:文本顏色。(4)String屬性:控件上的文本,以及列表框和彈出菜單的選項。(5)Visible :控件是否可見。2、對象的常規(guī)信息(1) Enable屬性:表示此控件的使能狀態(tài),設(shè)置為on”表示可選,為“ off 時則表示不可選。(2)Style:控件對象類型。(3)Tag:控件表示(用戶定義)。(4)TooltipString屬性:提示信息顯示。當(dāng)鼠標(biāo)指針位于此控件上時,顯 示提示信息。(5)UserData用戶指定數(shù)據(jù)。(6)

23、Position:控件對象的尺寸和位置。(7)Un its :設(shè)置控件的位置及大小的單位(8)有關(guān)字體的屬性,如 Fo ntAn gle, Fon tName等。3、控件回調(diào)函數(shù)的執(zhí)行(1)BusyAction :處理回調(diào)函數(shù)的中斷。有兩種選項:即 Can cel:取消中 斷事件,queue排隊(默認(rèn)設(shè)置)。(2) ButtonDownFcn屬性:按鈕按下時的處理函數(shù)。(3) CallBack屬性:是連接程序界面整個程序系統(tǒng)的實質(zhì)性功能的紐帶。該屬性值應(yīng)該為一個可以直接求值的字符串,在該對象被選中和改變時,系統(tǒng)將自動地對字符串進(jìn)行求值。(4) CreateFcn在對象產(chǎn)生過程中執(zhí)行的回調(diào)函數(shù)。

24、(5) DeleteFcn:刪除對象過程中執(zhí)行的回調(diào)函數(shù)。(6) Interruptible屬性:指定當(dāng)前的回調(diào)函數(shù)在執(zhí)行時是否允許中斷,去 執(zhí)行其他的函數(shù)。4、控件當(dāng)前狀態(tài)信息(1) ListboxTop:在列表框中顯示的最頂層的字符串的索引(2) Max :最大值。(3) Min :最小值。(4) Value:控件的當(dāng)前值。應(yīng)用MATLAB制作這樣一個過程是非常方便的,我們可以通過GUI操作 來看到。該環(huán)境下要設(shè)計一個界面友好的仿真軟件,一般應(yīng)完成以下兩個步驟:(1) GUI界面設(shè)計。主要是通過不同的文本框、按鈕等許多工具的使用, 設(shè)計出一個圖形用戶界面。要清楚這個圖形界面的功能是什么,即

25、在圖形界面上 的操作會引發(fā)什么樣的結(jié)果。(2) 回調(diào)函數(shù)的設(shè)計。用戶應(yīng)根據(jù)設(shè)計好的圖形界面的功能,針對各個不 同的圖形對象來編寫出能夠?qū)崿F(xiàn)該功能的函數(shù)代碼,確保這個圖形界面能夠完成 所預(yù)定的功能。4.2 “濾波器設(shè)計軟件”設(shè)計所實現(xiàn)任務(wù)“濾波器設(shè)計軟件”設(shè)計所實現(xiàn)任務(wù)如下:1、能夠?qū)崿F(xiàn)人機(jī)交互2、在下拉Digital Filter菜單里選擇IIR和FIR濾波器設(shè)計3、當(dāng)選擇IIR濾波器時,能夠選擇巴特沃斯(Butterworth)、切比雪夫I (ChebyshevI )濾波器、切比雪夫U (ChebyshevU)濾波器、橢圓(Ellipse)濾波器4、當(dāng)選擇 FIR 濾波器是,能夠選擇 Box

26、ar、Bartlett、Blackman、Hanning、Hamming、Kaiser窗口設(shè)計濾波器5、 在下拉菜單 Filter Type中選擇濾波器類型,能夠選擇Lowpass Highpass Bandpass Bandstop 四種類型6在下拉菜單Display Type中選擇圖形顯示類型,能夠選擇Li near、Logarithmic 兩種類型7、在設(shè)計濾波器階數(shù)時,可選擇自定義階數(shù)和利用最小階數(shù)設(shè)計濾波器,并顯 示最小階數(shù)8、 在參數(shù)輸入中,可輸入抽樣頻率Fs、濾波器通帶臨界頻率(Fp1、Fp2)、濾 波器阻帶臨界頻率(Fst1、Fst2)、通帶內(nèi)的最大衰減Rp、通帶內(nèi)的最小衰減R

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

28、對應(yīng)于圖形顯示結(jié)果,實時顯示濾波器階次和分子分母多項式系數(shù)Filter DesignAuta RunRm jQuit圖4 “濾波器設(shè)計軟件”主面板圖5 GUI設(shè)計的圖形界面4.3基于Matlab GUI的數(shù)字濾波器設(shè)計實現(xiàn)431 “濾波器設(shè)計軟件” GUI界面設(shè)計在matlab命令行窗口中輸入guide或點擊matlab界面上面的菜單中的/圖 標(biāo),打開gui設(shè)計的圖形界面如圖5。然后拖入所要的圖形控件,按需要修改外 觀和空間屬性,直至滿足要求,如圖 6。設(shè)置屬性點擊guide界面上方的Run按 鈕,會生成一個fig文件,一個m文件,其中fig文件就是界面的圖形,m文件 是界面的回調(diào)函數(shù),在 m

29、文件里每個控件的回調(diào)函數(shù)都已經(jīng)自動生成,控件要 做的工作就是在文件框架下定義某些特殊要求的狀態(tài)并補充完整回調(diào)函數(shù)場,使單擊控件時激活回調(diào)程序完成一定的功能。圖6 “濾波器設(shè)計軟件” GUI界面設(shè)計432 “濾波器設(shè)計軟件”回調(diào)函數(shù)編寫設(shè)計總框圖如圖7所示廠Boxcar, iBartlettjBlackmanHarmingrJHammingKaiser圖7設(shè)計總框圖1、Digital Filter 下拉菜單在下拉Digital Filter菜單里選擇IIR和FIR濾波器設(shè)計選擇IIR或者FIR屏蔽相應(yīng)的選項,當(dāng)選擇IIR選項時,使FIR的Windows的選擇窗口不能使用,程序和效果圖(圖 8、圖

30、9 )如下:function DigitalFilter_Callback(hObject, eventdata, handles)%讀取此時選擇的濾波器選擇,“IIR、FIR”DigitalFilter_value=get(handles.DigitalFilter, Value);%當(dāng)選擇了 IIR時,使窗口選項屏蔽if(DigitalFilter_value=1)set(ha ndles.FilterDesig n;en able;o n);set(ha ndles.Wi ndowse nable;off)%當(dāng)選擇了 FIR時,使IIR的濾波器(Butterworth、Chebyshev

31、I等)選項屏蔽elseset(ha ndles.FilterDesig n;en able:off);set(ha ndles.Wi ndowse nable on)end17Digit創(chuàng) Fitter R filterFilter Design BltterworlhDiM創(chuàng) Filter F|R 幵訕Filter Desii ButterworthWindows boxcarPiter Type LowpassDisplay Type LinearFilter TypeDisplsy Type Linear圖8 IIR濾波器選擇圖9 FIR濾波器選擇-Filter Choosel Filt

32、er ChooseCustomOrderButt on _value=get(ha ndles.CustomOrderButtorValue);202、Filter Type下拉菜單在下拉菜單Filter Type中選擇濾波器類型選擇低通或者高通濾波器時,隱藏相應(yīng)的帶通和帶阻的第二個臨界頻率,使其頻率參數(shù)不能輸入,程序和效果圖(圖 10、圖11 )如下:fun cti on FilterType_Callback(hObject, eve ntdata, han dies)%讀取此時設(shè)計的濾波器的類型,“ Lowpass、Highpass Bandpass Bandstop” FilterTy

33、pe_value=get(ha ndles.FilterType;Value);%當(dāng)選擇Lowpass或者Highpass,屏蔽相應(yīng)的臨界頻率的顯示if(FilterType_value=1)|(FilterType_value=2)set(ha ndles.Fp2visible,off);set(ha ndles.Fs2visible,off);set(ha ndles.text17visible,off);set(ha ndles.text19;visible,off);set(ha ndles.text6visible, off );set(ha ndles.textIOvisible,

34、 off);else%當(dāng)選擇Bandpass或者Bandstop,使相應(yīng)的臨界頻率的顯示,使參數(shù)能夠輸入if(FilterType_value=3)|(FilterType_value=4)set(ha ndles.Fp2visible, on );set(ha ndles.Fs2visible, on);set(ha ndles.text17visible,o n);set(ha ndles.text19,visible ,o n);endendFrequency SpecificetionsFsHzFplHz岡1HzFsHzFp1H2Fp2HzFst1HzFst2HzI Frequency

35、 Specificstions -圖10低通、高通濾波器頻率參數(shù)輸入圖11低通、高通濾波器頻率參數(shù)輸入3、Min Order 和 Custom Orde按鈕在設(shè)計濾波器階數(shù)時,可選擇自定義階數(shù)和利用最小階數(shù)設(shè)計濾波器,并顯示最小階數(shù),這里涉及的控件 Min Order和Custom Order,其回調(diào)函數(shù)如下:(1)按鈕 Min Order選擇使用最小階數(shù)設(shè)置時,屏蔽自定義階數(shù)的輸入,如圖12: fun cti on Mi nOrder_Callback(hObject, eve ntdata, han dies) Mi nOrder_value=get(ha ndles.Mi nOrder,

36、Value);if (MinOrder_value=1)set(ha ndles.Ordervisible ,off); elseset(ha ndles.Ordervisible, on); end(2)按鈕 Custom Order選擇自定義階數(shù)時,顯示階數(shù)輸入框,如圖13 function CustomOrderButton_Callback(hObject, eventdata, handles)if (CustomOrderButt on _value=0)set(ha ndles.Ordervisible,off);elseset(ha ndles.Ordervisible, on

37、);end(3) 其中涉及Run控件中的程序如下: 顯示最小階數(shù)set(ha ndles.Mi nOrderDisplay;stri ng, nu m2str( n) 當(dāng)選擇了自定義階數(shù)時,讀取自定義階數(shù)if(Mi nOrder_value=0)n=str2double(get(ha ndles.Orde+Stri ng)endo Min OrderCustom OrderFilter Orderhrin Ordera Cuxtorm Order3圖12使用最小階數(shù)設(shè)計Filter圖13使用自定義階數(shù)設(shè)計Filter4、Fp1、Fp2、Fst1、Fst2 文本編輯框參數(shù)輸入時,在輸入抽樣頻率F

38、s的前提下,判斷濾波器通帶臨界頻率(Fp1、Fp2)、濾波器阻帶臨界頻率(Fst1、Fst2)的歸一化頻率 wpl、wp2、wsl、ws1是否在0,1之間,如不正確顯示錯誤對話框,其程序和效果圖(圖14)如下: fun cti on Fp1_Callback(hObject, eve ntdata, han dles)%檢查輸入的通帶臨界頻率 Fp1的歸一化頻率是否在0,1之間Fs_value=str2double(get(ha ndles.Fsjtri ng);wp1=2*Fp1_value/Fs_value;%如果不在0,1之間,顯示輸入錯誤對話框if(wp1=1)errordlg(,wp

39、1=2*Fp1/Fs,歸一化頻率不在【0, 1】之間,請輸入正確的參數(shù)?錯誤信息)end圖14輸入?yún)?shù)錯誤信息框顯示Fp2、Fst1、Fst2的回調(diào)函數(shù)同理編程5、Run按鈕根據(jù)輸入的參數(shù)顯示設(shè)計的濾波器的幅頻特性和相頻特性圖,其程序如下:fun cti on Run _Callback(hObject, eve ntdata, han dles)%點擊Run立即運行AutoChoose,m文件,實現(xiàn)濾波器設(shè)計程序AutoChoose(ha ndles)6 Auto Run 按鈕當(dāng)選擇了 Auto Run按鈕時,能夠根據(jù)所選的IIR的濾波器(Butterworth、 ChebyshevI等)、

40、FIR的窗口選項、圖形顯示類型 (Li near、Logarithmic)立即 顯示濾波器的幅頻特性和相頻特性圖,其中IIR的濾波器(Butterworth、ChebyshevI等)的回調(diào)函數(shù)程序如下: function FilterDesign_Callback(hObject, eventdata, handles)AutoR un _value=get(ha ndles.AutoR un Value);%當(dāng)選擇了 Filter(Butterworth、ChebyshevI 等)中一種 Filter 運行 AutoChoose,m文件if(AutoRun_value=1)AutoChoos

41、e(ha ndles)end7、Quit按鈕退出濾波器設(shè)計窗口,其程序如下:fun cti on Quit_Callback(hObject, eve ntdata, han dies)%點擊Quti按鈕退出Close4.3.3AutoChoose.m 程序的編寫fun cti on AutoChoose(ha ndles)Nn=128;DigitalFilter_value=get(handles.DigitalFilter, Value);FilterDesig n_value=get(ha ndles.FilterDesig n,Value);Win dows_value=get(ha

42、ndles.Wi ndowsValue);FilterType_value=get(ha ndles.FilterType:Value);DisplayType_value=get(ha ndles.DisplayType:Value);Order_value=get(ha ndles.OrdetValue);Rp_value=str2double(get(ha ndles.RpStri ng);Rs_value=str2double(get(ha ndles.RpStri ng);Fs_value=str2double(get(ha ndles.Fsjtri ng);Fp1_value=st

43、r2double(get(ha ndles.FplStri ng);Fp2_value=str2double(get(ha ndles.Fp2Stri ng);Fs1_value=str2double(get(ha ndles.FsIStri ng);Fs2_value=str2double(get(ha ndles.Fs2$tri ng);wp1=2*Fp1_value/Fs_value;wp2=2*Fp2_value/Fs_value; ws1=2*Fs1_value/Fs_value;ws2=2*Fs2_value/Fs_value; wp=wp1,wp2;ws=ws1,ws2;if (

44、DigitalFilter_value=1)if(FilterDesig n_value=1) if(FilterType_value=1)|(FilterType_value=2)n, Wn=buttord(wp1,ws1,Rp_value,Rs_value);set(ha ndles.Mi nOrderDisplay;stri ng, nu m2str( n) elseif(FilterType_value=3)|(FilterType_value=4)n, Wn=buttord(wp,ws,Rp_value,Rs_value);set(ha ndles.Mi nOrderDisplay;

45、stri ng, nu m2str( n) endendelseif(FilterDesig n_value=2)if(FilterType_value=1)|(FilterType_value=2)n, Wn=cheb1ord(wp1,ws1,Rp_value,Rs_value; set(ha ndles.Mi nOrderDisplay;stri ng, nu m2str( n) elseif (FilterType_value=3)|(FilterType_value=4) n ,Wn=cheb1ord(wp,ws,Rp_value,Rs_value); set(ha ndles.Mi

46、nOrderDisplay;stri ng, nu m2str( n) endendelseif (FilterDesig n_value=3)if (FilterType_value=1)|(FilterType_value=2)n, Wn=cheb2ord(wp1,ws1,Rp_value,Rs_value);set(ha ndles.Mi nOrderDisplay;stri ng, nu m2str( n)elseif(FilterType_value=3)|(FilterType_value=4)n ,Wn=cheb2ord(wp,ws,Rp_value,Rs_value);set(

47、ha ndles.Mi nOrderDisplay;stri ng, nu m2str( n)endendelseif(FilterDesig n_value=4) if(FilterType_value=1)|(FilterType_value=2)n, Wn=ellipord(wp1,ws1,Rp_value,Rs_value);set(ha ndles.Mi nOrderDisplay;stri ng, nu m2str( n)elseif (FilterType_value=3)|(FilterType_value=4)n ,Wn=ellipord(wp,ws,Rp_value,Rs_

48、value);set(ha ndles.Mi nOrderDisplay;stri ng, nu m2str( n)endendendendendelseendif(DigitalFilter_value=2)if(FilterType_value=1)|(FilterType_value=2)n, Wn=buttord(wp1,ws1,Rp_value,Rs_value);set(ha ndles.Mi nOrderDisplay;stri ng, nu m2str( n)elseif(FilterType_value=3)|(FilterType_value=4)n, Wn=buttord

49、(wp,ws,Rp_value,Rs_value);set(ha ndles.Mi nOrderDisplay:stri ng, nu m2str( n)endendend endMin Order_value=get(ha ndles.Mi nOrder;Value);if (MinOrder_value=0)n=str2double(get(ha ndles.Orde+Stri ng)endswitch DigitalFilter_value %數(shù)字濾波器 IIR 或者 FIR 選擇case1%選擇IIR濾波器switch FilterDesign_value%IIR 中 Butterwo

50、rth、Chebyshev1、Chebyshev2、Ellipise 濾波器case1%選擇 Butterworth 濾波器switch FilterType_value% 選擇濾波器類型case1%低通濾波器b,a=butter( n, Wn);h,f=freqz(b,a, Nn,F s_value);axes(ha ndles.Mag ni tude);%把下面程序得到的圖畫在 Magaz ine if(DisplayType_value=1) % 選擇 Lin ear 畫幅頻圖 plot(f,abs(h) %畫幅頻圖else plot(f,20*log10(abs(h) %選擇 Loga

51、rithmic 畫幅頻圖endgrid on;axes(ha ndles.Phase)%把下面程序得到的圖畫在 Phase plot(f,angle(h); %畫相頻圖grid on;case2 %高通濾波器b,a=butter( n, Wn,high);h,f=freqz(b,a, Nn,F s_value);axes(ha ndles.Mag nitude); if(DisplayType_value=1) plot(f,abs(h) else plot(f,20*log10(abs(h) endgrid on;axes(ha ndles.Phase);plot(f,a ngle(h);g

52、riob n;case3%帶通濾波器b,a=butter( n, Wn);h,f=freqz(b,a, Nn,F s_value); axes(ha ndles.Mag nitude);if(DisplayType_value=1) plot(f,abs(h) else plot(f,20*log10(abs(h) endgrid on;axes(ha ndles.Phase);plot(f,a ngle(h);grid n;case4%帶阻濾波器b,a=butter( n, Wn,stop);h,f=freqz(b,a, Nn,F s_value);axes(ha ndles.Mag nit

53、ude); if(DisplayType_value=1) plot(f,abs(h) else plot(f,20*log10(abs(h) endgrid on;end case2J Jcase3axes(ha ndles.Phase);plot(f,a ngle(h);grid n;%選擇設(shè)計Chebyshevl濾波器%選擇設(shè)計Chebyshev2濾波器case4%選擇設(shè)計Ellipse濾波器endcase2 %選擇FIR濾波器switch Windows_value %FIR 中的 Windows 選擇 casel %選擇設(shè)計boxar濾波器J Jcase2 %選擇設(shè)計Bartlett

54、濾波器J Jcase3 %選擇設(shè)計Blackman濾波器J Jcase4 %選擇設(shè)計hanning濾波器J Jcase5 %選擇設(shè)計hamming濾波器J Jcase6 %選擇設(shè)計kaiser濾波器J Jendend614.4運行和結(jié)果顯示1運行和結(jié)果顯示在圖形界面下,按“運行”,出現(xiàn)如圖15所示界面,選擇要設(shè)計的濾波器選項,編輯框中輸人要求設(shè)計的數(shù)字濾波器的性能指標(biāo),選擇“Run”命令按鈕,出現(xiàn)如圖所示的模擬低通原型濾波器幅頻響應(yīng)和相頻響應(yīng)曲線,最小階次。當(dāng)選擇了“ Auto Run”按鈕,在“濾波器類型選擇”旁的下拉菜單框中選擇其他類型 的濾波器會立刻出現(xiàn)此類型的濾波器的圖形。例如選擇設(shè)計IIR的Butterworth低通濾波器,其 Fs=1000Hz, Fp1=100Hz, Fs1=300H z,Rp=3dB,Rs=20dB, n=4 顯示如圖 16圖15運行顯示界面圖16 Butterworth低通濾波器2顯示不同濾波器的顯示結(jié)果1、選擇設(shè)計 IIR 低通濾波

溫馨提示

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

評論

0/150

提交評論