版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、1 數字濾波器的概述31.1 FIR數字濾波器設計原理31.2 FIR數字濾波器的特性31.3 窗函數的介紹52 FIR數字濾波器設計及實現(xiàn)62.1 低通濾波器的設計62.2 高通濾波器的設計72.3 帶通濾波器的設計92.4 帶阻濾波器的設計103基于MATLAB GUI的FIR濾波器的仿真123.1 FIR數字濾波器設計所實現(xiàn)的任務123.2 FIR數字濾波器界面設計123.3 FIR數字濾波器函數的編寫133.3.1 菜單FilterType的回調函數133.3.2 顯示類型DispType的函數143.3.3 階數N和最小階數N按鈕的函數143.3.4 文本編輯框的回調函數153.3.
2、5 濾波器波形按鈕的回調函數153.3.6 文本框Rp和Rs的函 數163.3.7 產生信號按鈕的回調函數163.3.8 濾波后的信號按鈕的回調函數163.3.9 按鈕Quit的回調函數163.4總程序的編寫174 實驗結果與顯示175 結束語176 感謝177 參考文獻17附錄18基于MATLAB的FIR數字濾波器的設計與仿真李宏華湛江師范學院信息科學與技術學院,湛江 摘 要:本文從FIR數字濾波器的設計原理和特性入手,實現(xiàn)了用MATLAB設計FIR數字濾波器的功能,重點闡述了通過MATLAB GUI實現(xiàn)了FIR數字濾波器的仿真。詳細介紹了MATLAB GUI界面的構建與回調函數的程序編寫與
3、調試。關鍵詞:MATLAB;GUI;FIR濾波器The Design and Simulation of FIR Digital Filter base on ATLABLI HonghuaInformation Science & Technology School, Zhanjiang Normal University, zhanjiang, ChinaAbstract:This paper starts with the design principles and characteristics of the FIR digital filter, Achieve the task o
4、f using MATLAB software to design the FIR digital filter, in particular introduction to complete the simulation of the FIR digital filter base on MATLAB GUI software. Comprehensive introduce to the building of GUI interface and the program compiled with debugging of the callback function.Key word:MA
5、TLAB; GUI; FIR Filter1 數字濾波器的概述1.1 FIR數字濾波器設計原理1中介紹了數字濾波器沖激響應的時域特征,可將數字濾波器分為2種,即無限長沖激響應濾波器( IIR)和有限長沖激響應濾波器(FIR) 。FIR具有突出的優(yōu)點:系統(tǒng)總是穩(wěn)定的、易于實現(xiàn)線性相位、允許設計多通帶(或多阻帶)濾波器。但與IIR相比,在滿足同樣的阻帶衰減的情況下需要較高的階數。FIR的沖激響應h(k)是有限長的M 階FIR系統(tǒng)函數可表示為濾波器的輸出: 它的設計問題實質上是確定能滿足所要求的轉移序列或脈沖響應的常數問題,2中給出的設計方法主要有窗函數法、頻率采樣法和等波紋最佳逼近法等。在這里我們
6、利用窗函數法設計FIR濾波器。給定所要求的濾波器的頻率響應Hd ( ejw) , 要求設計一個FIR 濾波器的頻率響應H( ejw) 來逼近Hd( ejw) .設計是在時域進行的, 首先由傅立葉變換導出無限長的序列hd( n) , 然后用窗函數截斷hd ( n) ,即: h( n) = hd( n) w( n)。1.2 FIR數字濾波器的特性FIR濾波器有以下特點: (1) 系統(tǒng)的單位沖激響應h(n)在有限個n值處不為零; (2) 系統(tǒng)函數H(z)在|z|0處收斂,極點全部在z = 0處(因果系統(tǒng));(3) 結構上主要是非遞歸結構,沒有輸出到輸入的反饋,但有些結構中(例如頻率抽樣結構)也包含有
7、反饋的遞歸部分。因為FIR數字濾波器的單位沖激響應是有限長的,所以它永遠都是穩(wěn)定的。3說明了達到具有線性相位這一要求,僅需要對FIR數字濾波器的沖激響應施加一定的約束。令,就可由得到FIR數字濾波器的頻率響應: (1-2-1)式中是的幅頻特性,是的相頻特性 (1-2-2)4中討論了由于h(n)的長度N取奇數或偶數時對H(w)的特性有影響, FIR濾波器的幅頻特性可以分為以下4種情況:(1)第種類型:為偶對稱,且N為奇數根據式:可以得到濾波器的幅頻函數為: (1-2-3)其中,。幅度函數對呈偶對稱。(2)第種類型:為偶對稱,且N為偶數根據式:可得濾波器的幅頻函數為: (1-2-4)其中:。幅度函
8、數對于或呈偶對稱。如果數字濾波器在處不為零,如本文設計的高通濾波器和帶阻濾波器則不能用這一類型。 (3)第種類型:為奇對稱,且N為奇數根據式:可得濾波器的幅頻函數為: (1-2-5)其中。數字濾波器在=0,2處不為零如低通濾波器、高通濾波器、帶阻濾波器,則不適合用這類濾波器來設計。(4)第種類型:為奇對稱,且N為偶數根據式:可得濾波器的幅頻函數可表示為: (1-2-6)其中:。幅度函數對于呈偶對稱。如果數字濾波器在處不為零如低通濾波器、帶阻濾波器,則不適合用這類數字濾波器來設計。1.3 窗函數的介紹設計濾波器盡量要求窗函數滿足以下兩項要求: (1)窗譜主瓣盡可能地窄,以獲取較陡的過渡帶。 (2
9、)盡量減少窗譜的最大旁瓣的相對幅度。也就是能量盡量集中于主瓣,這樣使尖峰和波紋減小,就可增大阻帶的衰減。 但是這兩項要求是不能同時滿足的。當選用主瓣寬度較窄時,雖然得到陡峭的過渡帶,但通帶和阻帶的波動明顯增加;當選用最小的旁瓣幅度時,雖能得到平坦的幅度響應和較小的阻帶波紋,但過渡帶加寬,即主瓣會加寬。因此,實際所選用的窗函數往往是它們的折中。設計FIR濾波器常用的窗函數有:矩形窗、三角窗、漢寧窗、海明窗、布拉克曼窗、凱塞窗等。以下是幾種窗函數的性能比較:窗函數旁瓣峰值衰減(dB)等效凱塞爾窗()主瓣過渡帶寬()精確過渡帶寬()最小阻帶衰減(Db)矩形窗-13041.8-21三角窗-251.33
10、86.1-25漢寧窗-313.8686.2-44海明窗-414.8686.6-53布萊克曼窗-577.041211-74凱賽爾窗-577.8651010-80想詳細了解以上幾個窗函數請查閱參考文獻4或者用命令wvtool(windows(N)查看。2 FIR數字濾波器設計及實現(xiàn)2.1 低通濾波器的設計低通濾波器允許信號中的低頻或直流分量通過,抑制高頻分量或干擾和噪聲。程序如下:%fp1=10;fs1=15;fs=100;boxcar window%fp1=10; %低通通帶模擬截止頻率fs1=15; %低通阻帶模擬截止頻率fs=100; %采集頻率wp1=2*pi*fp1/fs; %模擬轉變?yōu)?/p>
11、數字域的截止頻率ws1=2*pi*fs1/fs;delta_w=ws1-wp1; %過渡帶寬N=ceil(1.8*pi/delta_w)+1;%最小階數Nwindow=boxcar(N);%N=ceil(6.1*pi/delta_w)+1;%最小階數N%window=bartlett(N);%注意要改一下過渡帶寬的系數%N=ceil(6.2*pi/delta_w)+1;%最小階數N%window=hanning(N);%N=ceil(6.6*pi/delta_w)+1;%最小階數N%window=hamming(N);%N=ceil(11*pi/delta_w)+1;%最小階數N%window
12、=blackman(N);%N=ceil(10*pi/delta_w)+1;%最小階數N%window=kaiser(N+1);Wn=(fp1+fs1)/fs; %理想LPF的截止頻率b,a=fir1(N-1,Wn,window);H,w=freqz(b,1,512);db=20*log10(abs(H); %db imaginet=(0:200)/fs;Signal=sin(2*pi*t*5)+sin(2*pi*t*15)+sin(2*pi*t*30); %輸入信號FilterSignal=filter(b,1,Signal);subplot(2,2,1);plot(w*fs/(2*pi),
13、db);xlabel(頻率);ylabel(db);title(濾波器的相對振幅);grid on;subplot(2,2,2);plot(w*fs/(2*pi),angle(H);xlabel(頻率);ylabel(angle(H);title(濾波器相位響應);grid on;subplot(2,2,3);plot(t,Signal);xlabel(t);ylabel(Signal);title(濾波前的信號波形);grid on;subplot(2,2,4);plot(t,FilterSignal);xlabel(t);ylabel(FilterSignal);title(濾波后的信號波
14、形);grid on;2.2 高通濾波器的設計高通濾波器允許信號中的高頻分量通過,抑制低頻或直流分量。程序如下:%fs1=10,fp1=15;fs=100(wp1=0.3pi;ws1=0.2pi)%fs1=10; %高通阻帶模擬截止頻率fp1=15; %高通通帶模擬截止頻率fs=100; %采用頻率wp1=2*pi*fp1/fs; %模擬轉變?yōu)閿底钟虻慕刂诡l率ws1=2*pi*fs1/fs;delta_w=wp1-ws1; %過渡帶寬N=ceil(1.8*pi/delta_w)+1;N=N+rem(N,2);window=boxcar(N+1);%N=ceil(6.1*pi/delta_w)+
15、1;N=N+rem(N,2);%window=bartlett(N+1);%N=ceil(6.2*pi/delta_w)+1;N=N+rem(N,2);%window=hanning(N+1);%N=ceil(6.6*pi/delta_w)+1;N=N+rem(N,2);%window=hamming(N+1);%N=ceil(11*pi/delta_w)+1;N=N+rem(N,2);%window=blackman(N+1);%N=ceil(10*pi/delta_w)+1;N=N+rem(N,2);%window=kaiser(N+1);Wn=(fp1+fs1)/fs; %理想LPF的截
16、止頻率b,a=fir1(N,Wn,high,window);H,w=freqz(b,1,512);db=20*log10(abs(H); %db imaginet=(0:200)/fs;Signal=sin(2*pi*t*5)+sin(2*pi*t*15)+sin(2*pi*t*30); %輸入信號FilterSignal=filter(b,1,Signal);subplot(2,2,1);plot(w*fs/(2*pi),db);xlabel(頻率);ylabel(db);title(濾波器的相對振幅);grid on;subplot(2,2,2);plot(w*fs/(2*pi),angl
17、e(H);xlabel(頻率);ylabel(angle(H);title(濾波器相位響應);grid on;subplot(2,2,3);plot(t,Signal);xlabel(t);ylabel(Signal);title(濾波前的信號波形);grid on;subplot(2,2,4);plot(t,FilterSignal);xlabel(t);ylabel(FilterSignal);title(濾波后的信號波形);grid on;2.3 帶通濾波器的設計帶通濾波器允許一定頻段的信號通過,抑制低于或高于該頻段的信號、干擾和噪聲。程序如下:%fp1=20;fp2=30;fs1=10
18、;fs4=40;fs=100%n,Wn,beta,ftype=kaiserord(7 13 17 23,0 1 0,0.01 0.01 0.01,100);fp1=20; %帶通通帶模擬截止頻率fp2=30; %帶通通帶模擬截止頻率fs1=10;fs2=40;fs=100;wp1=2*pi*fp1/fs;%數字域的截止頻率wp2=2*pi*fp2/fs;ws1=2*pi*fs1/fs;ws2=2*pi*fs2/fs;deltaw1=wp1-ws1; %Transition bandwidth deltaw2=ws2-wp2; delta_w=min(deltaw1,deltaw2);N=cei
19、l(1.8*pi/delta_w)+1;window=boxcar(N+1);%N=ceil(6.1*pi/delta_w)+1;%window=bartlett(N+1);%N=ceil(6.2*pi/delta_w)+1;%window=hanning(N+1);%N=ceil(6.6*pi/delta_w)+1;%window=hamming(N+1);%N=ceil(11*pi/delta_w)+1;%window=blackman(N+1);%N=ceil(10*pi/delta_w)+1;%window=kaiser(N+1);b=fir1(N,wp1/pi wp2/pi,wind
20、ow);H,w=freqz(b,1,512);db=20*log(abs(H);t=(0:200)/fs;Signal=sin(2*pi*t*5)+sin(2*pi*t*15)+sin(2*pi*t*30);%輸入信號FilterSignal=filter(b,1,Signal);subplot(2,2,1);plot(w*fs/(2*pi),db);xlabel(頻率);ylabel(db);title(濾波器的相對振幅);grid on;subplot(2,2,2);plot(w*fs/(2*pi),angle(H);xlabel(頻率);ylabel(angle(H);title(濾波器
21、相位響應);grid on;subplot(2,2,3);plot(t,Signal);ylabel(Signal);title(濾波前的信號波形);grid on;subplot(2,2,4);plot(t,FilterSignal);xlabel(t);ylabel(FilterSignal);title(濾波后的信號波形);grid on; 2.4 帶阻濾波器的設計帶阻濾波器抑制一定頻段內的信號,允許該頻段以外的信號通過。程序如下:%fp1=10;fp2=40;fs1=20;fs2=30;fs=100;%n,Wn,beta,ftype=kaiserord(7 13 17 23,0 1 0
22、,0.01 0.01 0.01,100);fp1=10; %帶通通帶模擬截止頻率fp2=40; %帶通通帶模擬截止頻率fs1=20;fs2=30;fs=100;wp1=2*pi*fp1/fs;wp2=2*pi*fp2/fs;ws1=2*pi*fs1/fs;%數字域的截止頻率ws2=2*pi*fs2/fs;delta1=ws1-wp1;delta2=wp2-ws2;delta_w=min(delta1,delta2); %過渡帶寬N=ceil(1.8*pi/delta_w)+1;N=N+rem(N,2);window=boxcar(N+1);%N=ceil(6.1*pi/delta_w)+1;N
23、=N+rem(N,2);%window=bartlett(N+1);%N=ceil(6.2*pi/delta_w)+1;N=N+rem(N,2);%window=hanning(N+1);%N=ceil(6.6*pi/delta_w)+1;N=N+rem(N,2);%window=hamming(N+1);%N=ceil(11*pi/delta_w)+1;N=N+rem(N,2);%window=blackman(N+1);%N=ceil(10*pi/delta_w)+1;N=N+rem(N,2);%window=kaiser(N+1);b=fir1(N,ws1/pi ws2/pi,stop,
24、window);H,w=freqz(b,1,512);db=20*log(abs(H);t=(0:200)/fs;Signal=sin(2*pi*t*5)+sin(2*pi*t*15)+sin(2*pi*t*30);%輸入信號FilterSignal=filter(b,1,Signal);subplot(2,2,1);plot(w*fs/(2*pi),db);xlabel(頻率);ylabel(db);title(濾波器的相對振幅);grid on;subplot(2,2,2);plot(w*fs/(2*pi),angle(H);xlabel(頻率);ylabel(angle(H);title
25、(濾波器相位響應);grid on;subplot(2,2,3);plot(t,Signal);ylabel(Signal);title(濾波前的信號波形);grid on;subplot(2,2,4);plot(t,FilterSignal);xlabel(t);ylabel(FilterSignal);title(濾波后的信號波形);grid on;3基于MATLAB GUI的FIR濾波器的仿真3.1 FIR數字濾波器設計所實現(xiàn)的任務6中介紹了GUI設計工具應用的平臺。應用MATLAB GUI設計一個界面友好的仿真軟件,完成GUI界面的設計和回調函數的編寫。它所能實現(xiàn)的任務有:(1)、能夠
26、實現(xiàn)人機交換。(2)、能夠選擇Boxar、Bartlett、Hanning、Hamming、Blackman、Kaiser窗設計 濾波器。(3)、在FilterType中能夠選擇Lowpass、Highpass、Bandpass、Bandstop。(4)、在DisplayType中能夠選擇Linear、Logarithmic兩種不同的圖形顯示類型。(5)、根據輸入的數據計算并顯示系統(tǒng)的最小階數。(6)、根據輸入的參數,得到通帶波動系數Rp、最小阻帶衰減系數Rs。3.2 FIR數字濾波器界面設計 7中給出了GUI有以下四種啟動方式: (1)、在命令行窗口中輸入guide; (2)、點擊matla
27、b界面上面的菜單中的圖標; (3)、在START菜單中選MATLAB|GUIDE(GUI Builder); (4)、在MATLAB File菜單中選New|GUI。本設計用的第一種方式設計GUI界面。點擊guide界面上方的Run按鈕,會生成一個fig文件,一個m文件,其中fig文件就是界面的圖形,m文件是界面的回調函數,在m文件里完成回調函數的編寫。設計如下圖3-1所示的圖形主面板,共包括4個區(qū)域:(1)圖形區(qū):用于顯示各模塊的仿真曲線。(2)參數設區(qū):由靜態(tài)文本框和編輯框以及類型選擇按紐組成, 實時的進行系統(tǒng)參數的設定和濾波器原型的選定。(3)對象模型區(qū):實現(xiàn)設計結果的實時刷新與顯示。(
28、4)數據顯示區(qū):對應于圖形顯示結果。圖3-13.3 FIR數字濾波器函數的編寫3.3.1 菜單FilterType的回調函數在下拉菜單FilterType中選擇濾波器類型因為界面FilterType默認的是lowpass選項,所以GUI初始化時把第二個臨界頻率控件隱藏起來,F(xiàn)p2、Fs2控件的visible設置為off狀態(tài),選擇帶通或帶阻濾波器時就把這幾個控件顯示出來,選擇低通或者高通濾波器時,隱藏相應的帶通和帶阻的第二個臨界頻率,使其頻率參數不能輸入,程序和效果如圖3-2、3-3所示:function FilterType_Callback(hObject, eventdata, handl
29、es)FilterType_value=get(handles.FilterType,Value);%if (FilterType_value=1)|(FilterType_value=2) set(handles.Fp2Value,visible,off);set(handles.Fs2Value,visible,off); set(handles.Fp2,visible,off);set(handles.Fs2,visible,off);%Fp2 set(handles.text37,visible,off);set(handles.text39,visible,off);%Fs2else
30、 if (FilterType_value=3)|(FilterType_value=4) set(handles.Fp2Value,visible,on);set(handles.Fs2Value,visible,on); set(handles.Fp2,visible,on);set(handles.Fs2,visible,on);%Fp2 set(handles.text37,visible,on);set(handles.text39,visible,on);%Fs2 endend圖3-2 初始化或選擇lowpass、highpass 圖3-3 選擇bandpass、bandstop3
31、.3.2 顯示類型DispType的函數 濾波器的幅度特性有兩種方式顯示,設計的程序如下:if (DisplayTypeValue=1) %select Linearaxes(handles.Magnitude);plot(w*FsValue/(2*pi),abs(H);grid on;else %select Logarithmic axes(handles.Magnitude);plot(w*FsValue/(2*pi),db);grid on; %set(gca,XTickMode,manual,XTick,0,3,5,10);end3.3.3 階數N和最小階數N按鈕的函數在設計濾波器階
32、數時,在輸入用戶所希望的設計濾波器的階數后系統(tǒng)自動計算并顯示最小階數N。為了防止用戶自動輸入該最小參數N,在文本框屬性的:Enable項設為off,禁止輸入參數。涉及的程序如下:N_Value=str2double(get(handles.N_Value,String);%讀取N值N=N_Value;b=fir1(N-1,Wn,windows); %Fir1 to caculate the bset(handles.min_N_Value,string,num2str(M);%將得到的濾波器的最小階數顯示在“最小階數N”框上。3.3.4 文本編輯框的回調函數參數輸入時,在輸入抽樣頻率Fs的前提
33、下,判斷濾波器通帶臨界頻率(Fp1、Fp2)、濾波器阻帶臨界頻率(Fs1、Fs2)的歸一化頻率wp1、 wp2、ws1、ws1是否在0,1之間,如不正確顯示錯誤對話框,其程序和效果如圖3-4所示:function Fp1Value_Callback(hObject, eventdata, handles)FsValue=str2double(get(handles.FsValue,String);Fp1Value=str2double(get(handles.Fp1Value,String);wp1=2*Fp1Value/FsValue;if (wp1=1) errordlg(wp1=2*Fp
34、1/Fs is not in 0,1,please check input number);end圖3-4 輸入參數錯誤信息框顯示Fp2、Fs1、Fs2的回調函數同理編程。3.3.5 濾波器波形按鈕的回調函數根據輸入的參數顯示設計的濾波器的幅頻特性和相頻特性圖,其程序如下:function FilterWave_Callback(hObject, eventdata, handles)FilterWave(handles) %點擊該按鈕后自動運行FilterWave.m文件。3.3.6 文本框Rp和Rs的函 數系統(tǒng)根據輸入的參數自動計算濾波器的通帶波動和最小阻帶衰減并顯示在文本框中,為了防止用
35、戶自動輸入該兩個參數,在文本框屬性的:Enable項設為off,禁止輸入參數。以下程序為低通濾波器部分,其他的詳情請查看附錄程序。delta_w=2*pi/1000; %why is 1000 wpi=floor(wp1/delta_w)+1; %對wp1/delta_w取最近的整數Rp=-min(db(1:1:wpi); %Passband Ripple 實際通帶波動set(handles.RpValue,string,num2str(Rp);%display Passband Ripplewsi=floor(ws1/delta_w)+1; %對ws1/delta_w取最近的整數Rs=-round(max(db(wsi:1:501); %MinStopband attenuation 最小阻帶衰減set(handles.RsValue,string,num2str(Rs);%display MinStopband attenuation3.3.7 產生信號按鈕的回調函數 回調函數程序如下:fs=100;t=(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年遼寧省鞍山市單招職業(yè)適應性測試題庫及參考答案詳解
- 2026年廣西農業(yè)工程職業(yè)技術學院單招職業(yè)傾向性測試題庫帶答案詳解
- 紹興導游考試面試題及答案
- 機構研究報告-中國體育播客聽眾用戶分析報告-外文培訓課件
- 寧波人才服務有限公司2025年人員招聘備考題庫完整參考答案詳解
- 中國信達山東分公司2026年校園招聘備考題庫及參考答案詳解
- 2025年黃山太平經濟開發(fā)區(qū)投資有限公司公開招聘高管人員備考題庫及一套答案詳解
- 2025年中鐵十七局醫(yī)院公開招聘工作人員備考題庫及一套答案詳解
- 浙江大學醫(yī)學院附屬第四醫(yī)院2026年高層次人才招聘50人備考題庫及一套參考答案詳解
- 2025年東方電氣集團東方電機有限公司社會招聘備考題庫及參考答案詳解一套
- 小學生一、二、三年級家庭獎罰制度表
- 中石化華北分公司鉆井定額使用說明
- 礦山壓力與巖層控制智慧樹知到答案章節(jié)測試2023年湖南科技大學
- 機加工車間主任年終總結3篇
- WB/T 1119-2022數字化倉庫評估規(guī)范
- GB/T 5125-1985有色金屬沖杯試驗方法
- GB/T 4937.3-2012半導體器件機械和氣候試驗方法第3部分:外部目檢
- GB/T 23445-2009聚合物水泥防水涂料
- 我國尾管懸掛器研制(for cnpc)
- 第3章樁基工程課件
- 美國COMPASS電磁導航產品介紹課件
評論
0/150
提交評論