【正文】
andles)function axes1_DeleteF(hObject, eventdata, handles)% hObject handle to axes1 (see GCBO)% eventdata reserved to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)[7]第四章 IIR濾波器的具體實(shí)現(xiàn) 仿真結(jié)果 程序1運(yùn)行后的的結(jié)果圖:這是一個(gè)butterworth濾波器,對(duì)已設(shè)計(jì)的濾波器的頻率響應(yīng)要進(jìn)行校核,要得到幅頻相頻響應(yīng)特性,能夠達(dá)到本設(shè)計(jì)的要求。defaultUicontrolBackgroundColor39。BackgroundColor39。,[.9 .9 .9])。if usewhitebg set(hObject,39。endfunction pushbutton1_Callback(hObject, eventdata, handles)close(gcf)。defaultUicontrolBackgroundColor39。BackgroundColor39。)。,39。endfunction edit5_Callback(hObject, eventdata, handles)function edit5_CreateF(hObject, eventdata, handles)if ispc set(hObject,39。defaultUicontrolBackgroundColor39。BackgroundColor39。)。,39。)) returns contents of edit4 as a double% Executes during object creation, after setting all properties.function edit4_CreateF(hObject, eventdata, handles)% hObject handle to edit4 (see GCBO)% eventdata reserved to be defined in a future version of MATLAB% handles empty handles not created until after all CreateFs called% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc set(hObject,39。) returns contents of edit4 as text% str2double(get(hObject,39。endfunction edit4_Callback(hObject, eventdata, handles)% hObject handle to edit4 (see GCBO)% eventdata reserved to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hints: get(hObject,39。defaultUicontrolBackgroundColor39。BackgroundColor39。)。,39。endfunction edit3_Callback(hObject, eventdata, handles)function edit3_CreateF(hObject, eventdata, handles)% hObject handle to edit3 (see GCBO)% eventdata reserved to be defined in a future version of MATLAB% handles empty handles not created until after all CreateFs called% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc set(hObject,39。defaultUicontrolBackgroundColor39。BackgroundColor39。)。,39。function edit2_Callback(hObject, eventdata, handles)function edit2_CreateF(hObject, eventdata, handles)if ispc set(hObject,39。endfunction untitled1_OpeningF(hObject, eventdata, handles, varargin) = hObject。endif nargout [varargout{1:nargout}] = gui_mainf(gui_State, varargin{:})。amp。, [])。, [] , ... 39。, untitled1_OutputF, ... 39。, untitled1_OpeningF, ... 39。, gui_Singleton, ... 39。, mfilename, ... 39。gui_State = struct(39。按設(shè)計(jì)思路要求當(dāng)輸人數(shù)字濾波器性能指標(biāo)并按下“butterworth”命令按鈕時(shí),開始在 GUI上畫模擬原型濾波器的頻率響應(yīng)以及它在 S平面的零極點(diǎn)分布,同時(shí)顯示濾波器階數(shù)Ⅳ、原型濾波器的分子分母多項(xiàng)式系數(shù)b,a;[9]選擇“濾波器類型選擇”并按下“確定”按鈕時(shí)應(yīng)畫出相應(yīng)的數(shù)字濾波器幅頻響應(yīng)曲線及設(shè)計(jì)的數(shù)字濾波器的分子分母多項(xiàng)式系數(shù)bz,az。[9]本次任務(wù)涉及到兩個(gè)最主要的回調(diào) 函數(shù)編寫,即命令按鈕和下拉菜單。是由各種圖形對(duì)象,如圖形窗口菜單按鈕、文本框等構(gòu)建的用戶界面,是人機(jī)交流信息的平臺(tái)和工具。所謂圖形用戶界面。 axis([0,0,40])。db39。)。) xlabel(39。plot(f2,mag2) %輸出信號(hào)頻譜波形 title(39。*fs/length(y1)。 mag2=abs(y1)。)。 ylabel(39。t39。輸出信號(hào)39。 %數(shù)字濾波函數(shù)輸出 subplot(2,1,1)。 axis([0,0,40])。db39。)。) xlabel(39。plot(f1,mag1) %混頻信號(hào)頻譜波形 title(39。*fs/length(s1)。 mag1=abs(s1)。)。 ylabel(39。t39。輸入信號(hào)39。plot(n*T,s) %混頻信號(hào)波形 % subplot(2,1,1)。plot(T,s) %混頻信號(hào)波形 s=sin(2*pi*500*n*T)+sin(2*pi*7000*n*T)。 % s=sin(2*pi*500*T)+sin(2*pi*7000*T)。 plot(W,20*log10(abs(H)))。 sys=tf(bz,az,T)。%直接獲取歸一化低通原型 [bs,as]=lp2lp(bp,ap,Wn*pi*Fs)。s39。%設(shè)定模擬低通原型的零極點(diǎn)增益參數(shù) [bp,ap]=zp2tf(z,p,k)。 %求歸一化頻率 [N,Wn]=buttord(W1p,W1s,Rp,Rs)。 W1p=2*tan(2*pi*fp*T/2)/pi。Rs=60。Fs=1000。 fp=40。[9]實(shí)現(xiàn)程序如下: clear。這充分顯示了兩種設(shè)計(jì)方法的特點(diǎn),形象直觀。由 ()得到: () 雙線性變換法 雙線性變換法的設(shè)計(jì)過程如下:由積分器構(gòu)成的模擬濾波器的系統(tǒng)函數(shù)形式; () 2. :滿足指標(biāo)要求的低通IIR數(shù)字濾波器的幅度特性,如果與 Butterworth模擬原形低通濾波器相比較可知,采用脈沖響應(yīng)不變法轉(zhuǎn)換成的數(shù)字濾波器的幅度特性與原形低通濾波器幅度特性有差別,且頻率愈高差別愈大,這是由于頻率混疊現(xiàn)象起的。其設(shè)計(jì)過程都是由給定的模擬濾波器的系統(tǒng)函數(shù)Ha(s)去變換出相應(yīng)的數(shù)字濾波器的系統(tǒng)函數(shù)H(z)。常用的兩種方法是脈沖響應(yīng)不變法和雙線性變換法。然后用MATLAB設(shè)計(jì)一個(gè)巴特沃斯IIR低通濾波器,最后用GUI設(shè)計(jì)一個(gè)界面。對(duì)設(shè)計(jì)的各個(gè)步驟,MATLAB提供了相應(yīng)的工具箱函數(shù),使 IIR數(shù)字濾波器的設(shè)計(jì)變得非常簡單。即在規(guī)定意義上去逼近系統(tǒng)的特性,如果在S平面上去逼近,就得到模擬濾波 器;如果在 z平面逼近 ,就得到數(shù)字濾波器。隨著MATLAB軟件尤其是MATLAB的信號(hào)處理工作箱的不斷完善,不僅數(shù)字濾波器的計(jì)算機(jī)輔助設(shè)計(jì)有了可能,而且還可以使設(shè)計(jì)達(dá)到最優(yōu)化。 9.uimenu函數(shù):生成圖形窗口的菜單中層次菜單與下一級(jí)子菜單。7.image函數(shù):顯示圖片對(duì)象。5.patch函數(shù):填充多邊形。3.a(chǎn)xes函數(shù):創(chuàng)建坐標(biāo)軸圖形對(duì)象。 回調(diào)函數(shù)callback菜單可以創(chuàng)建圖形句柄的常見函數(shù):1.figure函數(shù):創(chuàng)建一個(gè)新的圖形對(duì)象。用于保存程序代碼。例如按鈕被按下時(shí)發(fā)生,下拉框改變值時(shí)發(fā)生,sliderbar 拖動(dòng)時(shí)發(fā)生等等。 10.列表框(Listbox)控件11.彈出式菜單(Popup Menu)控件 8.按鈕組(Button Group)控件9.檢查框(Check Box)控件 6.開關(guān)按鈕(Toggle Button)控件7.單選按鈕(Radio Button)控件 4.滾動(dòng)條(Slider)控件5.按鈕(Push Button)控件 GUI界面設(shè)計(jì)的總結(jié) 創(chuàng)建GUI在Command 里面輸入 GUIDE 或者從菜單里面,或者從快捷按鈕均可進(jìn)入 GUIDE新建并且保存后,會(huì)生成相應(yīng)的fig文件和m文件,在Layout編輯視圖,[11]可以使用如下工具:Layout Editor:布局編輯器;Alignment Tool:對(duì)齊工具;Property Inspector:對(duì)象屬性觀察器;Object Browser:對(duì)象瀏覽器;Menu Editor:菜單編輯器。接下來再通過控件布置編輯器來設(shè)置控件的對(duì)齊方式及間距等,以完善界面功能。如“確定”命按鈕對(duì)應(yīng)的“tag”標(biāo)記為“pushbutton2”;“濾波器類型選擇”下拉菜單對(duì)應(yīng)的“tag”是“popupmenul”[4]。對(duì)按鈕、編輯框等.可直接設(shè)置string值。⑷控件的String屬性:它是對(duì)控件對(duì)象所顯示內(nèi)容的設(shè)置。⑵控件的FontSize屬性:用來設(shè)置控件對(duì)象顯示內(nèi)容的字體字號(hào)。進(jìn)行 GUI設(shè)計(jì)時(shí),首先單擊面板左邊所需的控件,然后在右邊的圖形界面編輯區(qū)中再次單擊某一恰當(dāng)位置,這時(shí)將在該位置上為圖形界面添加相應(yīng)的控件。利用MATLAB設(shè)計(jì)濾波器,可以隨時(shí)對(duì)比設(shè)計(jì)要求和濾波器特性調(diào)整參數(shù),直觀簡便,極大的減輕了工作量,有利于濾波器設(shè)計(jì)的最優(yōu)化。利用MATLAB信號(hào)處理工具箱(Signal Processing Toolbox)快速有效的設(shè)計(jì)由軟件組成的常規(guī)數(shù)字濾波器的設(shè)計(jì)方法。同時(shí)對(duì)一些特殊的可視化要求,例如圖形對(duì)話等,MATLAB也有相應(yīng)的功能函數(shù),保證了用戶不同層次的要求??捎糜诳茖W(xué)計(jì)算和工程繪圖。MATLAB自產(chǎn)生之日起就具有方便的數(shù)據(jù)可視化功能,以將向量和矩陣用圖形表現(xiàn)出來,并且可以對(duì)圖形進(jìn)行標(biāo)注和打印。簡單的編程環(huán)境提供了比較完備的調(diào)試系統(tǒng),程序不必經(jīng)過編譯就可以直接運(yùn)行,而且能夠及時(shí)地報(bào)告出現(xiàn)的錯(cuò)誤及進(jìn)行出錯(cuò)原因分析。隨著MATLAB的商業(yè)化以及軟件本身的不斷升級(jí),MATLAB的用戶界面也越來越精致,更加接近Windows的標(biāo)準(zhǔn)界面,人機(jī)交互性更強(qiáng),操作更簡單。這些工具方便用戶使用MATLAB的函數(shù)和文件,其中許多工具采用的是圖形用戶界面。用戶可以在命令窗口中將輸入語句與執(zhí)行命令同步,也可以先編寫好一個(gè)較大的復(fù)雜的應(yīng)用程序(M文件)后再一起運(yùn)行。MATLAB可以進(jìn)行矩陣運(yùn)算、繪制函數(shù)和數(shù)據(jù)、實(shí)現(xiàn)算法、創(chuàng)建用戶界面、連接其他編程語言的程序等,主要應(yīng)用于工程計(jì)算、控制設(shè)計(jì)、信號(hào)處理與通訊、圖像處理、信號(hào)檢測、金融建模設(shè)計(jì)與分析等領(lǐng)域。[9]MATLAB是一個(gè)高級(jí)的矩陣/陣列語言,MATLAB是矩陣實(shí)驗(yàn)室(Matrix Laboratory)的簡稱,和Mathematica、Maple并稱為三大數(shù)學(xué)軟件。其應(yīng)用范圍非常廣,包括信號(hào)和圖像處理、通訊、控制系統(tǒng)設(shè)計(jì)、測試和測量、財(cái)務(wù)建模和分析以及計(jì)算生物學(xué)等眾多應(yīng)用領(lǐng)域。第2 章 IIR濾波器設(shè)計(jì)相關(guān)工具和技術(shù)(MATLAB)MATLAB 是美國MathWorks公司出品的商業(yè)數(shù)學(xué)軟件,用于算法開發(fā)、數(shù)據(jù)可視化、數(shù)據(jù)分析以及數(shù)值計(jì)算的高級(jí)技術(shù)計(jì)算語言和交互式環(huán)境,主要包括MATLAB和simu