基于matlab GUI的IIR低通数字滤波器设计_第1页
基于matlab GUI的IIR低通数字滤波器设计_第2页
基于matlab GUI的IIR低通数字滤波器设计_第3页
基于matlab GUI的IIR低通数字滤波器设计_第4页
基于matlab GUI的IIR低通数字滤波器设计_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、DSP课程设计报告题目 基于matlab GUI的IIR低通数字滤波器设计 学院:信息工程学院 专业:通信工程 姓名:张昊东 学号: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除外),系统函数| z>0|处收敛。系统单位冲激响应在有限个n值处不为零。结构上主要是非递归结构,没有输出到输入的反馈。故只能用较高的阶数达到高的选择性。FIR数字滤波器的幅频特性精度较之于IIR数字滤波器低,但是线性相位即

6、不同频率分量的信号经过FIR数字滤波器后他们的时间差不变。FIR数字滤波器具有系统稳定,易实现相位控制,允许设计多带通滤波器等优点。 FIR数字滤波器的结构有四种: 横截性;级联型结构;频率采样型结构;线性相位FIR滤波器的结构 (二)IIR数字滤波器 IIR数字滤波器的特点: 电位冲激响应h(n)是无限长的;系统函数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;%阻带衰减和通带衰减,中间是过渡区,采样频率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);%创建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设计工具应用的平面,面板上部提供了菜单和常用工具按钮,左边提供了多种如命令按钮、单选按钮、可编辑文本框、静态文本框、弹出式菜单等。进行设计时, 首先单击面板左边所需的控件, 然后在右边的图形界面编辑区中再次单击某一恰当位置, 这时将在该位上为图形界面添加相应的控件。一个图形界面的完成

11、, 除了设计其外观外, 还有相当的一部分是通过属性的设来完成的。 应用MATLAB制作这样一个过程是非常方便的, 我们可以通过GUI操作来看到。该环境下要设计一个界面友好的仿真软件,一般应完成以下两个步骤: (1)GUI界面设计。主要是通过不同的文本框、按钮等许多工具的使用,设计出一个图形用户界面。要清楚这个图形界面的功能是什么,即在图形界面上的操作会引发什么样的结果。 (2)回调函数的设计。用户应根据设计好的图形界面的功能,针对各个不同的图形对象来编写出能够实现该功能的函数代码,确保这个图形界面能够完成所预定的功能。 4.

12、2GUI界面设计具体操作 在matlab命令行窗口中输入guide或点击matlab界面上面的菜单中的图标,打开gui设计的图形界面。然后拖入所要的图形控件,按需要修改外观和空间属性,直至满足要求。设置属性点击guide界面上方的Run按钮,会生成一个fig文件,一个m文件,其中fig文件就是界面的图形,m文件是界面的回调函数,在m文件里每个控件的回调函数都已经自动生成,控件要做的工作就是在文件框架下定义某些特殊要求的状态并补充完整回调函数场, 使单击控件时激活回调程序完成一定的功能。4.3 GUI界面演示 1.初始界面:2. 输入相应参数并点击相应控件后界面&#

13、160;:5.仿真结果的分析从原始语音信号的频率谱密度可得:(频域上)频率主要集中在1*105HZ以下;噪声的频谱图可得:(频域上)噪声集中在2*105HZ以上;当两信号进行叠加,的到的叠加信号具有了两信号的特点,时域上:只对噪声频带宽带范围内对语音信号叠加,频域上:两信号频谱的叠加,各自信号频率对于各自的位置。利用双线性变换法,设计一个butterworth低通滤波器,设计的滤波器满足一下要求,(为便于观察,统一用频域上的频率)通带截止频率为1*105HZ,阻带截止频率为2*105HZ。从滤噪后的信号频谱图上观察可得:叠加噪声的图片通过滤波器后,1*105HZ通过,2*105HZ被滤除,所以

14、基本上只将噪声信号滤除掉了,回放语音,证实滤除效果非常理想。 6.课程设计总结  这次的课程设计,应该说命运多舛。刚开始对实验不是很懂,花费了大量的时间,要么查资料,要么问同学。最终皇天不负有心人,终于在验收之前给搞定了,满心欢喜的等待老师的验收。幸运的是也顺利通过了老师的验证,本来是很开心的。 但是,万万没想到,最后需要交电子档的实验报告,而我把它给删了,当我得知这个消息的时候万分悲痛,这也就意味着我还要重新做一次,什么都是从零开始,眼看别人很快就搞定了,我还要从头写程序开始,我真的很难受。但是,我必须要去重新一步步整,中间的酸辛我也就不多说了,总之别人在玩,我在整,别人在整,我还

15、是在整。如果中间有很多不足的地方还请老师谅解,我真的努力去做了,希望老师宽容大量,给我一个吸取教训的机会,下次一定不会再犯这么低级的错误了。 7.参考文献 1 陈后金数字信号处理第二版北京:高等教育出版社,2008.11 2 刘卫国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;%阻带衰减和通带衰减,中间是过渡区,采样频率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);%创建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. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论