基于matlab GUI的IIR低通數(shù)字濾波器設(shè)計(jì)_第1頁
基于matlab GUI的IIR低通數(shù)字濾波器設(shè)計(jì)_第2頁
基于matlab GUI的IIR低通數(shù)字濾波器設(shè)計(jì)_第3頁
基于matlab GUI的IIR低通數(shù)字濾波器設(shè)計(jì)_第4頁
基于matlab GUI的IIR低通數(shù)字濾波器設(shè)計(jì)_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、DSP課程設(shè)計(jì)報(bào)告題目 基于matlab GUI的IIR低通數(shù)字濾波器設(shè)計(jì) 學(xué)院:信息工程學(xué)院 專業(yè):通信工程 姓名:張昊東 學(xué)號(hào):201416630目錄1. 設(shè)計(jì)的主要內(nèi)容及基本求.22. 總體設(shè)計(jì)的基本思路.23. 設(shè)計(jì)方案.2 3.1原始語音信號(hào)加噪處理.2 3.2濾波器的設(shè)計(jì).3 3.2.1濾波器的基本知識(shí).3 3.2.2數(shù)字濾波器的選取.4 3.3濾除噪聲后的語音信號(hào).54. GUI的設(shè)計(jì).7 4.1 GUI界面設(shè)計(jì)概述.7 4.2 GUI界面設(shè)計(jì)具體操作.7 4.3 GUI界面設(shè)計(jì)演示.85.仿真結(jié)果的分析.96.課程設(shè)計(jì)總結(jié).97.參考文獻(xiàn).9附錄.101. 設(shè)計(jì)的主要內(nèi)容及基本

2、要求要求錄制一段自己的語音信號(hào)后,對(duì)所采集的語音信號(hào)加入干擾噪聲,設(shè)計(jì)相應(yīng)的數(shù)字濾波器濾除噪聲并進(jìn)行驗(yàn)證,最后設(shè)計(jì)GUI界面。2. 總體設(shè)計(jì)思路1.獲取一段語音。 2.對(duì)所獲取的語音信號(hào)進(jìn)行加噪處理。 3.設(shè)計(jì)數(shù)字濾波器。 4.將加噪后的信號(hào)通過所設(shè)計(jì)的濾波器,濾除噪聲。 5.驗(yàn)證濾除噪聲后的語音信號(hào)。 6.利用matlab GUI設(shè)計(jì)模板設(shè)計(jì)相應(yīng)的GUI界面。3設(shè)計(jì)方案3.1原始語音信號(hào)加噪處理 s,fs=audioread ('C:Users昊東Desktopzhd.wav');%讀取語音信號(hào)的數(shù)據(jù),賦給

3、變量y 信號(hào) 頻率y1=fft(s);f=fs*(0:511)/2048;%使頻譜圖的坐標(biāo)從零開始t=0:1/44100:(size(s)-1)/44100; %將所加噪聲信號(hào)的點(diǎn)數(shù)調(diào)整到與原始信號(hào)相同 Au=0.08; %幅度值d=Au*cos(2*pi*5000*t); %加余弦信號(hào) 頻率是5000hzn=d'%將噪聲進(jìn)行轉(zhuǎn)置,以便使噪聲與信號(hào)的行列相同,進(jìn)行相加x=s+n;%原始信號(hào)和噪聲信號(hào)疊加subplot(241);plot(t,s);title('原語音信號(hào)');subplot(242);plot(f,abs(y1(1:512);title('原語

4、音頻譜');subplot(243);plot(t,x),title('加噪后時(shí)域波形');%加噪后的時(shí)域圖subplot(245),plot(t,y);title('濾波后的時(shí)域波形');%畫出濾波后的時(shí)域圖y5=fft(x,2048);%進(jìn)行2048點(diǎn)傅里葉變換subplot(244);plot(f,abs(y5(1:512); %加噪后的頻譜圖 title('加噪后的頻譜');xlabel('頻率/Hz');ylabel('幅值i');3.2濾波器設(shè)計(jì)3.2.1數(shù)字濾波器的基本知識(shí)  數(shù)字濾

5、波器分為FIR數(shù)字濾波器和IIR數(shù)字濾波器兩種,即有限沖激響應(yīng)濾波器(FIR,F(xiàn)inite Impulse Response)濾波器和無線沖激響應(yīng)(IIR,Infinite Impulse Response)濾波器。 (一) FIR數(shù)字濾波器 FIR的特點(diǎn):  不存在極點(diǎn)(z=0除外),系統(tǒng)函數(shù)| z>0|處收斂。系統(tǒng)單位沖激響應(yīng)在有限個(gè)n值處不為零。結(jié)構(gòu)上主要是非遞歸結(jié)構(gòu),沒有輸出到輸入的反饋。故只能用較高的階數(shù)達(dá)到高的選擇性。FIR數(shù)字濾波器的幅頻特性精度較之于IIR數(shù)字濾波器低,但是線性相位即

6、不同頻率分量的信號(hào)經(jīng)過FIR數(shù)字濾波器后他們的時(shí)間差不變。FIR數(shù)字濾波器具有系統(tǒng)穩(wěn)定,易實(shí)現(xiàn)相位控制,允許設(shè)計(jì)多帶通濾波器等優(yōu)點(diǎn)。 FIR數(shù)字濾波器的結(jié)構(gòu)有四種: 橫截性;級(jí)聯(lián)型結(jié)構(gòu);頻率采樣型結(jié)構(gòu);線性相位FIR濾波器的結(jié)構(gòu) (二)IIR數(shù)字濾波器 IIR數(shù)字濾波器的特點(diǎn): 電位沖激響應(yīng)h(n)是無限長(zhǎng)的;系統(tǒng)函數(shù)H(z)在有限z平面上(0< |z|<)有極點(diǎn)存在;結(jié)構(gòu)上存在著輸出到輸入的反饋,也就是結(jié)構(gòu)上是遞歸型的。IIR濾波器運(yùn)算結(jié)構(gòu)通常由延時(shí)、乘以系數(shù)和相加等基本運(yùn)算組成。IIR數(shù)字濾波器的結(jié)構(gòu)也有四種:

7、0;直接I型;直接II型典范型;級(jí)聯(lián)型;并聯(lián)型。3.2.2數(shù)字濾波器的選取 由原始語音信號(hào)的頻譜圖可以看出,語音信號(hào)的能量集中在低頻部分,所以根據(jù)濾波器的特性和功能,所選擇的濾波器應(yīng)該具有濾除無用的高頻成分的作用,所以可以選用低通濾波器。又由于IIR數(shù)字濾波器的輸出不但取決于過去和現(xiàn)在的輸入,還取決于過去的輸出,所以,選擇IIR數(shù)字濾波器比選擇FIR數(shù)字濾波器要好。所設(shè)計(jì)的IIR巴特沃斯數(shù)字低通濾波器如下:wp=0.08*pi;ws=0.1*pi; %兩個(gè)頻率的信號(hào)Rp=1;Rs=15;Fs=44100;Ts=1/Fs;%阻帶衰減和通帶衰減,中間是過渡區(qū),采樣頻率44100wp1=2

8、/Ts*tan(wp/2);%將數(shù)字指標(biāo)轉(zhuǎn)換成模擬指標(biāo)ws1=2/Ts*tan(ws/2);N,Wn=buttord(wp1,ws1,Rp,Rs,'s');%選擇濾波器的最小階數(shù)Z,P,K=buttap(N);%創(chuàng)建butterworth模擬濾波器Bap,Aap=zp2tf(Z,P,K);b,a=lp2lp(Bap,Aap,Wn);bz,az=bilinear(b,a,Fs);%用雙線性變換法實(shí)現(xiàn)模擬濾波器到數(shù)字濾波器的轉(zhuǎn)換H,W=freqz(bz,az);%繪制頻率響應(yīng)曲線y=filter(bz,az,x);%調(diào)用上邊濾波器函數(shù)grid;subplot(247);plot(W

9、*Fs/(2*pi),abs(H);%畫濾波器頻域圖xlabel('頻率Hz');ylabel('頻率響應(yīng)幅度');title('Butterworth');3.3濾除噪聲后的語音信號(hào) 將加噪后的語音信號(hào)通過所設(shè)計(jì)的低通數(shù)字濾波器:濾除噪聲后還未展示出來的程序:subplot(245),plot(t,y);title('濾波后的時(shí)域波形');%畫出濾波后的時(shí)域圖F0=fft(y,2048); subplot(246);F1=plot(f,abs(F0(1:512); %畫出濾波后的頻譜圖 title('濾波后的頻

10、譜');xlabel('頻率/Hz');ylabel(' 幅值');由濾除噪聲后的語音信號(hào)可以看出,噪音已被濾除,試聽可知,原始語音信號(hào)基本沒有丟失。4.GUI設(shè)計(jì) 4.1 GUI界面設(shè)計(jì)概述 GUI設(shè)計(jì)面板是GUI設(shè)計(jì)工具應(yīng)用的平面,面板上部提供了菜單和常用工具按鈕,左邊提供了多種如命令按鈕、單選按鈕、可編輯文本框、靜態(tài)文本框、彈出式菜單等。進(jìn)行設(shè)計(jì)時(shí), 首先單擊面板左邊所需的控件, 然后在右邊的圖形界面編輯區(qū)中再次單擊某一恰當(dāng)位置, 這時(shí)將在該位上為圖形界面添加相應(yīng)的控件。一個(gè)圖形界面的完成

11、, 除了設(shè)計(jì)其外觀外, 還有相當(dāng)?shù)囊徊糠质峭ㄟ^屬性的設(shè)來完成的。 應(yīng)用MATLAB制作這樣一個(gè)過程是非常方便的, 我們可以通過GUI操作來看到。該環(huán)境下要設(shè)計(jì)一個(gè)界面友好的仿真軟件,一般應(yīng)完成以下兩個(gè)步驟: (1)GUI界面設(shè)計(jì)。主要是通過不同的文本框、按鈕等許多工具的使用,設(shè)計(jì)出一個(gè)圖形用戶界面。要清楚這個(gè)圖形界面的功能是什么,即在圖形界面上的操作會(huì)引發(fā)什么樣的結(jié)果。 (2)回調(diào)函數(shù)的設(shè)計(jì)。用戶應(yīng)根據(jù)設(shè)計(jì)好的圖形界面的功能,針對(duì)各個(gè)不同的圖形對(duì)象來編寫出能夠?qū)崿F(xiàn)該功能的函數(shù)代碼,確保這個(gè)圖形界面能夠完成所預(yù)定的功能。 4.

12、2GUI界面設(shè)計(jì)具體操作 在matlab命令行窗口中輸入guide或點(diǎn)擊matlab界面上面的菜單中的圖標(biāo),打開gui設(shè)計(jì)的圖形界面。然后拖入所要的圖形控件,按需要修改外觀和空間屬性,直至滿足要求。設(shè)置屬性點(diǎn)擊guide界面上方的Run按鈕,會(huì)生成一個(gè)fig文件,一個(gè)m文件,其中fig文件就是界面的圖形,m文件是界面的回調(diào)函數(shù),在m文件里每個(gè)控件的回調(diào)函數(shù)都已經(jīng)自動(dòng)生成,控件要做的工作就是在文件框架下定義某些特殊要求的狀態(tài)并補(bǔ)充完整回調(diào)函數(shù)場(chǎng), 使單擊控件時(shí)激活回調(diào)程序完成一定的功能。4.3 GUI界面演示 1.初始界面:2. 輸入相應(yīng)參數(shù)并點(diǎn)擊相應(yīng)控件后界面&#

13、160;:5.仿真結(jié)果的分析從原始語音信號(hào)的頻率譜密度可得:(頻域上)頻率主要集中在1*105HZ以下;噪聲的頻譜圖可得:(頻域上)噪聲集中在2*105HZ以上;當(dāng)兩信號(hào)進(jìn)行疊加,的到的疊加信號(hào)具有了兩信號(hào)的特點(diǎn),時(shí)域上:只對(duì)噪聲頻帶寬帶范圍內(nèi)對(duì)語音信號(hào)疊加,頻域上:兩信號(hào)頻譜的疊加,各自信號(hào)頻率對(duì)于各自的位置。利用雙線性變換法,設(shè)計(jì)一個(gè)butterworth低通濾波器,設(shè)計(jì)的濾波器滿足一下要求,(為便于觀察,統(tǒng)一用頻域上的頻率)通帶截止頻率為1*105HZ,阻帶截止頻率為2*105HZ。從濾噪后的信號(hào)頻譜圖上觀察可得:疊加噪聲的圖片通過濾波器后,1*105HZ通過,2*105HZ被濾除,所以

14、基本上只將噪聲信號(hào)濾除掉了,回放語音,證實(shí)濾除效果非常理想。 6.課程設(shè)計(jì)總結(jié)  這次的課程設(shè)計(jì),應(yīng)該說命運(yùn)多舛。剛開始對(duì)實(shí)驗(yàn)不是很懂,花費(fèi)了大量的時(shí)間,要么查資料,要么問同學(xué)。最終皇天不負(fù)有心人,終于在驗(yàn)收之前給搞定了,滿心歡喜的等待老師的驗(yàn)收。幸運(yùn)的是也順利通過了老師的驗(yàn)證,本來是很開心的。 但是,萬萬沒想到,最后需要交電子檔的實(shí)驗(yàn)報(bào)告,而我把它給刪了,當(dāng)我得知這個(gè)消息的時(shí)候萬分悲痛,這也就意味著我還要重新做一次,什么都是從零開始,眼看別人很快就搞定了,我還要從頭寫程序開始,我真的很難受。但是,我必須要去重新一步步整,中間的酸辛我也就不多說了,總之別人在玩,我在整,別人在整,我還

15、是在整。如果中間有很多不足的地方還請(qǐng)老師諒解,我真的努力去做了,希望老師寬容大量,給我一個(gè)吸取教訓(xùn)的機(jī)會(huì),下次一定不會(huì)再犯這么低級(jí)的錯(cuò)誤了。 7.參考文獻(xiàn) 1 陳后金數(shù)字信號(hào)處理第二版北京:高等教育出版社,2008.11 2 劉衛(wèi)國MATLAB程序設(shè)計(jì)與應(yīng)用第二版北京:高等教育出版社,2006.7附錄 %GUI源程序function varargout = untitled(varargin)% UNTITLED MATLAB code for untitled.fig% UNTITLED, by itself, creates a new UNTITL

16、ED or raises the existing% singleton*.% H = UNTITLED returns the handle to a new UNTITLED or the handle to% the existing singleton*.% UNTITLED('CALLBACK',hObject,eventData,handles,.) calls the local% function named CALLBACK in UNTITLED.M with the given input arguments.% UNTITLED('Propert

17、y','Value',.) creates a new UNTITLED or raises the% existing singleton*. Starting from the left, property value pairs are% applied to the GUI before untitled_OpeningFcn gets called. An% unrecognized property name or invalid value makes property application% stop. All inputs are passed to

18、 untitled_OpeningFcn via varargin.% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one% instance to run (singleton)".% See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the response to help untitled % Last Modified by GUIDE v2.5 02-Jan-2017 21:00:51

19、% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct('gui_Name', mfilename, . 'gui_Singleton', gui_Singleton, . 'gui_OpeningFcn', untitled_OpeningFcn, . 'gui_OutputFcn', untitled_OutputFcn, . 'gui_LayoutFcn', , . 'gui_Callback'

20、, );if nargin && ischar(varargin1) gui_State.gui_Callback = str2func(varargin1);end if nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:);else gui_mainfcn(gui_State, varargin:);end% End initialization code - DO NOT EDIT % - Executes just before untitled is made visible.function u

21、ntitled_OpeningFcn(hObject, eventdata, handles, varargin)% This function has no output args, see OutputFcn.% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% varargin command line arguments to unti

22、tled (see VARARGIN) % Choose default command line output for untitledhandles.output = hObject; % Update handles structureguidata(hObject, handles); % UIWAIT makes untitled wait for user response (see UIRESUME)% uiwait(handles.figure1); % - Outputs from this function are returned to the command line.

23、function varargout = untitled_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT);% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA) % Get default

24、 command line output from handles structurevarargout1 = handles.output; % - Executes during object creation, after setting all properties.function axes1_CreateFcn(hObject, eventdata, handles)% hObject handle to axes1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handl

25、es empty - handles not created until after all CreateFcns called % Hint: place code in OpeningFcn to populate axes1 % - Executes on button press in pushbutton2.function pushbutton2_Callback(hObject, eventdata, handles)% hObject handle to pushbutton2 (see GCBO)% eventdata reserved - to be defined in

26、a future version of MATLAB% handles structure with handles and user data (see GUIDATA)s,fs=audioread ('C:Users昊東Desktopzhd.wav');%讀取語音信號(hào)的數(shù)據(jù),賦給變量y 信號(hào) 頻率y1=fft(s);plot(handles.axes1,s)plot(handles.axes5,abs(y1) % - Executes on button press in pushbutton3.function pushbutton3_Callback(hObject,

27、eventdata, handles)% hObject handle to pushbutton3 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)s,fs=audioread ('C:Users昊東Desktopzhd.wav');%讀取語音信號(hào)的數(shù)據(jù),賦給變量y 信號(hào) 頻率y1=fft(s);f=fs*(0:511)/2048;%使頻譜圖的坐標(biāo)從零開始

28、t=0:1/44100:(size(s)-1)/44100; %將所加噪聲信號(hào)的點(diǎn)數(shù)調(diào)整到與原始信號(hào)相同 Au=0.08; %幅度值d=Au*cos(2*pi*5000*t); %加余弦信號(hào) 頻率是5000hzn=d'%將噪聲進(jìn)行轉(zhuǎn)置,以便使噪聲與信號(hào)的行列相同,進(jìn)行相加x=s+n;%原始信號(hào)和噪聲信號(hào)疊加y2=fft(x);%進(jìn)行2048點(diǎn)傅里葉變換plot(handles.axes2,x)plot(handles.axes6,abs(y2) % - Executes on button press in pushbutton4.function pushbutton4_Callba

29、ck(hObject, eventdata, handles)% hObject handle to pushbutton4 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)s,fs=audioread ('C:Users昊東Desktopzhd.wav');%讀取語音信號(hào)的數(shù)據(jù),賦給變量y 信號(hào) 頻率t=0:1/44100:(size(s)-1)/4410

30、0; %將所加噪聲信號(hào)的點(diǎn)數(shù)調(diào)整到與原始信號(hào)相同 Au=0.08; %幅度值d=Au*cos(2*pi*5000*t); %加余弦信號(hào) 頻率是5000hzn=d'%將噪聲進(jìn)行轉(zhuǎn)置,以便使噪聲與信號(hào)的行列相同,進(jìn)行相加x=s+n;%原始信號(hào)和噪聲信號(hào)疊加wp=0.08*pi;ws=0.1*pi; %兩個(gè)頻率的信號(hào)Rp=1;Rs=15;Fs=44100;Ts=1/Fs;%阻帶衰減和通帶衰減,中間是過渡區(qū),采樣頻率44100wp1=2/Ts*tan(wp/2);%將數(shù)字指標(biāo)轉(zhuǎn)換成模擬指標(biāo)ws1=2/Ts*tan(ws/2);N,Wn=buttord(wp1,ws1,Rp,Rs,'s&

31、#39;);%選擇濾波器的最小階數(shù)Z,P,K=buttap(N);%創(chuàng)建butterworth模擬濾波器Bap,Aap=zp2tf(Z,P,K);b,a=lp2lp(Bap,Aap,Wn);bz,az=bilinear(b,a,Fs);%用雙線性變換法實(shí)現(xiàn)模擬濾波器到數(shù)字濾波器的轉(zhuǎn)換H,W=freqz(bz,az);%繪制頻率響應(yīng)曲線y=filter(bz,az,x);%調(diào)用上邊濾波器函數(shù)F0=fft(y); plot(handles.axes3,x)plot(handles.axes7,abs(F0) % - Executes on button press in pushbutton5.f

32、unction pushbutton5_Callback(hObject, eventdata, handles)% hObject handle to pushbutton5 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)s,fs=audioread ('C:Users昊東Desktopzhd.wav');sound(s,fs); % - Execute

33、s on button press in pushbutton6.function pushbutton6_Callback(hObject, eventdata, handles)% hObject handle to pushbutton6 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)s,fs=audioread ('C:Users昊東Desktopzhd.

34、wav');%讀取語音信號(hào)的數(shù)據(jù),賦給變量y 信號(hào) 頻率y1=fft(s);f=fs*(0:511)/2048;%使頻譜圖的坐標(biāo)從零開始t=0:1/44100:(size(s)-1)/44100; %將所加噪聲信號(hào)的點(diǎn)數(shù)調(diào)整到與原始信號(hào)相同 Au=0.08; %幅度值d=Au*cos(2*pi*5000*t); %加余弦信號(hào) 頻率是5000hzn=d'%將噪聲進(jìn)行轉(zhuǎn)置,以便使噪聲與信號(hào)的行列相同,進(jìn)行相加x=s+n;%原始信號(hào)和噪聲信號(hào)疊加sound(x); % - Executes on button press in pushbutton7.function pushbutton7_Callback(hObject, eventdata, handles)% hObject handle to pushbutton7 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)s,fs=audioread ('C:Users昊東Desktopzhd.wav');%讀取語音信號(hào)的數(shù)據(jù),賦給變量y 信號(hào) 頻率t=0:

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論