




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、DSP課程設計報告題目 基于matlab GUI的IIR低通數字濾波器設計 學院:信息工程學院 專業(yè):通信工程 姓名:張昊東 學號:201416630目錄1. 設計的主要內容及基本求.22. 總體設計的基本思路.23. 設計方案.2 3.1原始語音信號加噪處理.2 3.2濾波器的設計.3 3.2.1濾波器的基本知識.3 3.2.2數字濾波器的選取.4 3.3濾除噪聲后的語音信號.54. GUI的設計.7 4.1 GUI界面設計概述.7 4.2 GUI界面設計具體操作.7 4.3 GUI界面設計演示.85.仿真結果的分析.96.課程設計總結.97.參考文獻.9附錄.101. 設計的主要內容及基本
2、要求要求錄制一段自己的語音信號后,對所采集的語音信號加入干擾噪聲,設計相應的數字濾波器濾除噪聲并進行驗證,最后設計GUI界面。2. 總體設計思路1.獲取一段語音。 2.對所獲取的語音信號進行加噪處理。 3.設計數字濾波器。 4.將加噪后的信號通過所設計的濾波器,濾除噪聲。 5.驗證濾除噪聲后的語音信號。 6.利用matlab GUI設計模板設計相應的GUI界面。3設計方案3.1原始語音信號加噪處理 s,fs=audioread ('C:Users昊東Desktopzhd.wav');%讀取語音信號的數據,賦給
3、變量y 信號 頻率y1=fft(s);f=fs*(0:511)/2048;%使頻譜圖的坐標從零開始t=0:1/44100:(size(s)-1)/44100; %將所加噪聲信號的點數調整到與原始信號相同 Au=0.08; %幅度值d=Au*cos(2*pi*5000*t); %加余弦信號 頻率是5000hzn=d'%將噪聲進行轉置,以便使噪聲與信號的行列相同,進行相加x=s+n;%原始信號和噪聲信號疊加subplot(241);plot(t,s);title('原語音信號');subplot(242);plot(f,abs(y1(1:512);title('原語
4、音頻譜');subplot(243);plot(t,x),title('加噪后時域波形');%加噪后的時域圖subplot(245),plot(t,y);title('濾波后的時域波形');%畫出濾波后的時域圖y5=fft(x,2048);%進行2048點傅里葉變換subplot(244);plot(f,abs(y5(1:512); %加噪后的頻譜圖 title('加噪后的頻譜');xlabel('頻率/Hz');ylabel('幅值i');3.2濾波器設計3.2.1數字濾波器的基本知識 數字濾
5、波器分為FIR數字濾波器和IIR數字濾波器兩種,即有限沖激響應濾波器(FIR,Finite Impulse Response)濾波器和無線沖激響應(IIR,Infinite Impulse Response)濾波器。 (一) FIR數字濾波器 FIR的特點: 不存在極點(z=0除外),系統(tǒng)函數| z>0|處收斂。系統(tǒng)單位沖激響應在有限個n值處不為零。結構上主要是非遞歸結構,沒有輸出到輸入的反饋。故只能用較高的階數達到高的選擇性。FIR數字濾波器的幅頻特性精度較之于IIR數字濾波器低,但是線性相位即
6、不同頻率分量的信號經過FIR數字濾波器后他們的時間差不變。FIR數字濾波器具有系統(tǒng)穩(wěn)定,易實現相位控制,允許設計多帶通濾波器等優(yōu)點。 FIR數字濾波器的結構有四種: 橫截性;級聯型結構;頻率采樣型結構;線性相位FIR濾波器的結構 (二)IIR數字濾波器 IIR數字濾波器的特點: 電位沖激響應h(n)是無限長的;系統(tǒng)函數H(z)在有限z平面上(0< |z|<)有極點存在;結構上存在著輸出到輸入的反饋,也就是結構上是遞歸型的。IIR濾波器運算結構通常由延時、乘以系數和相加等基本運算組成。IIR數字濾波器的結構也有四種:
7、0;直接I型;直接II型典范型;級聯型;并聯型。3.2.2數字濾波器的選取 由原始語音信號的頻譜圖可以看出,語音信號的能量集中在低頻部分,所以根據濾波器的特性和功能,所選擇的濾波器應該具有濾除無用的高頻成分的作用,所以可以選用低通濾波器。又由于IIR數字濾波器的輸出不但取決于過去和現在的輸入,還取決于過去的輸出,所以,選擇IIR數字濾波器比選擇FIR數字濾波器要好。所設計的IIR巴特沃斯數字低通濾波器如下:wp=0.08*pi;ws=0.1*pi; %兩個頻率的信號Rp=1;Rs=15;Fs=44100;Ts=1/Fs;%阻帶衰減和通帶衰減,中間是過渡區(qū),采樣頻率44100wp1=2
8、/Ts*tan(wp/2);%將數字指標轉換成模擬指標ws1=2/Ts*tan(ws/2);N,Wn=buttord(wp1,ws1,Rp,Rs,'s');%選擇濾波器的最小階數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);%用雙線性變換法實現模擬濾波器到數字濾波器的轉換H,W=freqz(bz,az);%繪制頻率響應曲線y=filter(bz,az,x);%調用上邊濾波器函數grid;subplot(247);plot(W
9、*Fs/(2*pi),abs(H);%畫濾波器頻域圖xlabel('頻率Hz');ylabel('頻率響應幅度');title('Butterworth');3.3濾除噪聲后的語音信號 將加噪后的語音信號通過所設計的低通數字濾波器:濾除噪聲后還未展示出來的程序:subplot(245),plot(t,y);title('濾波后的時域波形');%畫出濾波后的時域圖F0=fft(y,2048); subplot(246);F1=plot(f,abs(F0(1:512); %畫出濾波后的頻譜圖 title('濾波后的頻
10、譜');xlabel('頻率/Hz');ylabel(' 幅值');由濾除噪聲后的語音信號可以看出,噪音已被濾除,試聽可知,原始語音信號基本沒有丟失。4.GUI設計 4.1 GUI界面設計概述 GUI設計面板是GUI設計工具應用的平面,面板上部提供了菜單和常用工具按鈕,左邊提供了多種如命令按鈕、單選按鈕、可編輯文本框、靜態(tài)文本框、彈出式菜單等。進行設計時, 首先單擊面板左邊所需的控件, 然后在右邊的圖形界面編輯區(qū)中再次單擊某一恰當位置, 這時將在該位上為圖形界面添加相應的控件。一個圖形界面的完成
11、, 除了設計其外觀外, 還有相當的一部分是通過屬性的設來完成的。 應用MATLAB制作這樣一個過程是非常方便的, 我們可以通過GUI操作來看到。該環(huán)境下要設計一個界面友好的仿真軟件,一般應完成以下兩個步驟: (1)GUI界面設計。主要是通過不同的文本框、按鈕等許多工具的使用,設計出一個圖形用戶界面。要清楚這個圖形界面的功能是什么,即在圖形界面上的操作會引發(fā)什么樣的結果。 (2)回調函數的設計。用戶應根據設計好的圖形界面的功能,針對各個不同的圖形對象來編寫出能夠實現該功能的函數代碼,確保這個圖形界面能夠完成所預定的功能。 4.
12、2GUI界面設計具體操作 在matlab命令行窗口中輸入guide或點擊matlab界面上面的菜單中的圖標,打開gui設計的圖形界面。然后拖入所要的圖形控件,按需要修改外觀和空間屬性,直至滿足要求。設置屬性點擊guide界面上方的Run按鈕,會生成一個fig文件,一個m文件,其中fig文件就是界面的圖形,m文件是界面的回調函數,在m文件里每個控件的回調函數都已經自動生成,控件要做的工作就是在文件框架下定義某些特殊要求的狀態(tài)并補充完整回調函數場, 使單擊控件時激活回調程序完成一定的功能。4.3 GUI界面演示 1.初始界面:2. 輸入相應參數并點擊相應控件后界面
13、160;:5.仿真結果的分析從原始語音信號的頻率譜密度可得:(頻域上)頻率主要集中在1*105HZ以下;噪聲的頻譜圖可得:(頻域上)噪聲集中在2*105HZ以上;當兩信號進行疊加,的到的疊加信號具有了兩信號的特點,時域上:只對噪聲頻帶寬帶范圍內對語音信號疊加,頻域上:兩信號頻譜的疊加,各自信號頻率對于各自的位置。利用雙線性變換法,設計一個butterworth低通濾波器,設計的濾波器滿足一下要求,(為便于觀察,統(tǒng)一用頻域上的頻率)通帶截止頻率為1*105HZ,阻帶截止頻率為2*105HZ。從濾噪后的信號頻譜圖上觀察可得:疊加噪聲的圖片通過濾波器后,1*105HZ通過,2*105HZ被濾除,所以
14、基本上只將噪聲信號濾除掉了,回放語音,證實濾除效果非常理想。 6.課程設計總結 這次的課程設計,應該說命運多舛。剛開始對實驗不是很懂,花費了大量的時間,要么查資料,要么問同學。最終皇天不負有心人,終于在驗收之前給搞定了,滿心歡喜的等待老師的驗收。幸運的是也順利通過了老師的驗證,本來是很開心的。 但是,萬萬沒想到,最后需要交電子檔的實驗報告,而我把它給刪了,當我得知這個消息的時候萬分悲痛,這也就意味著我還要重新做一次,什么都是從零開始,眼看別人很快就搞定了,我還要從頭寫程序開始,我真的很難受。但是,我必須要去重新一步步整,中間的酸辛我也就不多說了,總之別人在玩,我在整,別人在整,我還
15、是在整。如果中間有很多不足的地方還請老師諒解,我真的努力去做了,希望老師寬容大量,給我一個吸取教訓的機會,下次一定不會再犯這么低級的錯誤了。 7.參考文獻 1 陳后金數字信號處理第二版北京:高等教育出版社,2008.11 2 劉衛(wèi)國MATLAB程序設計與應用第二版北京:高等教育出版社,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');%讀取語音信號的數據,賦給變量y 信號 頻率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');%讀取語音信號的數據,賦給變量y 信號 頻率y1=fft(s);f=fs*(0:511)/2048;%使頻譜圖的坐標從零開始
28、t=0:1/44100:(size(s)-1)/44100; %將所加噪聲信號的點數調整到與原始信號相同 Au=0.08; %幅度值d=Au*cos(2*pi*5000*t); %加余弦信號 頻率是5000hzn=d'%將噪聲進行轉置,以便使噪聲與信號的行列相同,進行相加x=s+n;%原始信號和噪聲信號疊加y2=fft(x);%進行2048點傅里葉變換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');%讀取語音信號的數據,賦給變量y 信號 頻率t=0:1/44100:(size(s)-1)/4410
30、0; %將所加噪聲信號的點數調整到與原始信號相同 Au=0.08; %幅度值d=Au*cos(2*pi*5000*t); %加余弦信號 頻率是5000hzn=d'%將噪聲進行轉置,以便使噪聲與信號的行列相同,進行相加x=s+n;%原始信號和噪聲信號疊加wp=0.08*pi;ws=0.1*pi; %兩個頻率的信號Rp=1;Rs=15;Fs=44100;Ts=1/Fs;%阻帶衰減和通帶衰減,中間是過渡區(qū),采樣頻率44100wp1=2/Ts*tan(wp/2);%將數字指標轉換成模擬指標ws1=2/Ts*tan(ws/2);N,Wn=buttord(wp1,ws1,Rp,Rs,'s&
31、#39;);%選擇濾波器的最小階數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);%用雙線性變換法實現模擬濾波器到數字濾波器的轉換H,W=freqz(bz,az);%繪制頻率響應曲線y=filter(bz,az,x);%調用上邊濾波器函數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');%讀取語音信號的數據,賦給變量y 信號 頻率y1=fft(s);f=fs*(0:511)/2048;%使頻譜圖的坐標從零開始t=0:1/44100:(size(s)-1)/44100; %將所加噪聲信號的點數調整到與原始信號相同 Au=0.08; %幅度值d=Au*cos(2*pi*5000*t); %加余弦信號 頻率是5000hzn=d'%將噪聲進行轉置,以便使噪聲與信號的行列相同,進行相加x=s+n;%原始信號和噪聲信號疊加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');%讀取語音信號的數據,賦給變量y 信號 頻率t=0:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度智慧醫(yī)療中心運營管理費收取協(xié)議
- 二零二五年度房屋租賃權抵押評估報告?zhèn)浒笇徍朔课葙J款合同
- 二零二五年度電力系統(tǒng)運行電工服務協(xié)議
- 電子支付賬戶管理服務合同
- 日常行政管理操作規(guī)范
- 心理咨詢行業(yè)個人咨詢服務協(xié)議
- 全國醫(yī)藥研發(fā)中心技術轉讓合同
- 貨物運輸代理協(xié)議書
- 數據驅動的智慧城市建設項目協(xié)議
- 高考語文備考:政論類文言文之《淮南子》匯編
- 兒科護理模擬考試題與參考答案
- 2025年南網數字集團公開選聘高頻重點模擬試卷提升(共500題附帶答案詳解)
- 西門子S7-1200 PLC應用技術項目教程(第3版) 考試復習題
- 注意缺陷與多動障礙疾病科普幼兒心理健康教育課件
- 水利行業(yè)知識培訓課件
- 區(qū)域臨床檢驗中心
- 2025-2030年中國人力資源服務行業(yè)全國市場開拓戰(zhàn)略制定與實施研究報告
- 2024年07月長沙農村商業(yè)銀行股份有限公司2024年招考3名信息科技專業(yè)人才筆試歷年參考題庫附帶答案詳解
- 中醫(yī)預防流感知識講座
- 事故隱患內部報告獎勵機制實施細則
- 《CT、MR的臨床應用》課件
評論
0/150
提交評論