数字信号处理课程设计报告书一、课程设计的目的1、使学生进一步巩固数字信号处理的基本概念、理论、分析方法和实现方法;2、增强学生运营Matlab软件编写数字信号处理应用程序及分析,解决实际问题的能力。二、课程设计题目应用Matlab进行信号分析及滤波器设计三、课程设计的内容及实现方案(代码)内容:针对噪声干扰的语音信号,首先利用sound函数试听语音信号的内容,接着通过编写程序分析语音信号时域波形和功率谱波形。按照给定要求,分别设计IIR和FIR数字滤波器,并分析滤波器的幅度响应、相位响应,群延迟响应及零极点位置。然后用设计好的滤波器对存在噪声干扰的语音信号进行滤波,分析滤波后语音信号的时域波形和功率谱波形,并对滤波前后的信号进行对比,分析信号的变化;回放语音信号,检验噪声干扰是否消除;最后,利用GUI设计一个信号处理系统界面。实现方案一、利用audioread函数提取噪声干扰的语音信号,用sound函数播放其内容。代码如下图:二、噪声干扰信号的语音信号的时域分析和频域分析,其中频域的功率谱分析调用了power_analysis函数power_analysis函数三、设计数字滤波器并进行滤波和画出其频率响应设计IIR时先用buttord,cheb1ord,cheb2ord和ellipord求出各类型滤波器的截止频率和最小阶数,然后再调用Matlab中的IIR滤波器的完全设计函数butter,cheby1,Cheby2,ellip进行滤波器的设计;设计FIR时先求出截止频率,过渡带宽度,最小阶数后,再调用fir1进行滤波器设计。设计的代码较长,见课程设计源代码部分。画出频率响应等特性,IIR滤波器调用filter函数,而FIR滤波器则调用fftfilt函数。如图:四、比较滤波前后语音信号的波形及频谱将时域和频域的对比图都放在同一个窗中。五、回放语音信号六、设计系统界面四、设计结果分析以去除高频噪声为例一、提取二、选择相应滤波器,并设置参数。三、时域和频域分析四、过滤后的时域与频域分析五、过滤前后的时域频域对比图六、零极点分布七、幅度响应八、相位响应九、群延迟响应五、心得体会《数字信号处理》是我们通信工程的一门重要的专业基础课程,主要任务是研究数字信号处理理论的基本概念和基本分析方法,通过建立数学模型和适当的数学分析处理,来展示这些理论和方法的实际应用。数字信号处理技术正飞速发展,它不但自成一门学科,更是以不同形式影响和渗透到其他学科:它与国民经济息息相关,与国防建设紧密相连;它影响或改变着我们的生产、生活方式,因此受到人们普遍的关注。我在大二第一学期上过熊旋老师的信号与系统课程,里面学习的全是数学知识和数学公式,比如:傅里叶变换,拉普拉斯变换和Z变换等。上课总是觉得很闷,因为这门课感觉就像跟高数差不多,有些甚至比高数还难。但是在上了老师的课,老师经常给我们讲课外知识,浪潮之巅,高通的创始人和国外一些具备商业头脑的科学家的故事,这些故事拓展我们的视野,激发我们对这门课程的学习兴趣。在学习这门课中,我不再感觉是单纯地背和运用数学公式,而是在学习前人创立的种种知识成果,一步步探索数字信号处理的奥秘。让我印象最深刻的知识就是FFT的运用,这简直就是颠覆性的创新(在当时而言),使得运算次数大大减少,就像我现在热衷的互联网一样,行进中开火,战斗中学习,学习中创新。接下来就是课程设计,考验我们的动手能力时候到了。首先就是GUI界面的设计,自己刚开始命名不规范,导致做到后面,程序变得一塌糊涂,无法正常运行。第二次吸取教训,总结上次的经验,最终完成了GUI界面的设计。最让我头痛还是滤波器的设计,大boss。IIR的设计还好,自己参考一些书籍和上网百度,勉强还可以做出来。FIR的设计,自己实在琢磨不出来后就去研究班里其他已经做好的同学的,费了九牛二虎之力,才完成了最终设计。最后一个难点就是代码中各模块的连接调用,要注意各函数局部变量在全局中的调用。课程设计,想说爱不容易,纵使虐我千百遍,依然待如初恋,但是,自己在设计过程中所付出的汗水,是多么的难能可贵和难以磨灭。那些和舍友,班里同学的不时讨论的日子,那些在图书馆每人借几本MATLAB书籍的日子,那些自己一人默默对着电脑调bug的日子,一切都证明自己至少认真过,负责过。最后,谢谢老师这学期的呕心沥血,我会永远记得您的话,不能不听,不能再听,您是我大学见过最有个性的老师。老师辛苦啦。同时,也谢谢班里同学对自己。六、参考文献1程佩青.数字信号处理(第三版).北京:清华大学出版社,20122万永革.数字信号处理的MATLAB实现.北京:科学出版社,20073王正林,毛涛涛.精通MATLABGUI设计(第2版).北京:电子工业出版社,20064郭仕剑等.MATLAB7.X数字信号处理.人民邮电出版社,20065张明照,刘政波,刘斌.应用MATLAB实现信号分析和处理.科学出版社,2006七、源代码functionvarargout=hpysecond(varargin)%HPYSECONDMATLABcodeforhpysecond.fig%HPYSECOND,byitself,createsanewHPYSECONDorraisestheexisting%singleton*.%%H=HPYSECONDreturnsthehandletoanewHPYSECONDorthehandleto%theexistingsingleton*.%%HPYSECOND('CALLBACK',hObject,eventData,handles,...)callsthelocal%functionnamedCALLBACKinHPYSECOND.Mwiththegiveninputarguments.%%HPYSECOND('Property','Value',...)createsanewHPYSECONDorraisesthe%existingsingleton*.Startingfromtheleft,propertyvaluepairsare%appliedtotheGUIbeforehpysecond_OpeningFcngetscalled.An%unrecognizedpropertynameorinvalidvaluemakespropertyapplication%stop.Allinputsarepassedtohpysecond_OpeningFcnviavarargin.%%*SeeGUIOptionsonGUIDE'sToolsmenu.ChooseGUIallowsonlyone%instancetorun(singleton).%%Seealso:GUIDE,GUIDATA,GUIHANDLES%Edittheabovetexttomodifytheresponsetohelphpysecond%LastModifiedbyGUIDEv2.506-Jan-201512:56:36%Begininitializationcode-DONOTEDITgui_Singleton=1;gui_State=struct('gui_Name',mfilename,...'gui_Singleton',gui_Singleton,...'gui_OpeningFcn',@hpysecond_OpeningFcn,...'gui_OutputFcn',@hpysecond_OutputFcn,...'gui_LayoutFcn',[],...'gui_Callback',[]);ifnargin&&ischar(varargin{1})gui_State.gui_Callback=str2func(varargin{1});endifnargout[varargout{1:nargout}]=gui_mainfcn(gui_State,varargin{:});elsegui_mainfcn(gui_State,varargin{:});end%Endinitializationcode-DONOTEDIT%---Executesjustbeforehpysecondismadevisible.functionhpysecond_OpeningFcn(hObject,eventdata,handles,varargin)%Thisfunctionhasnooutputargs,seeOutputFcn.%hObjecthandletofigure%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%varargincommandlineargumentstohpysecond(seeVARARGIN)handles.output=hObject;handles.h=0;handles.b=0;handles.a=0;handles.method_iir=1;handles.method_fir=0;handles.type=1;handles.method=1;handles.fs=8000;handles.fpass=0;handles.fpass2=0;handles.fstop=0;handles.fstop2=0;handles.apass=0;handles.apass2=0;handles.astop=0;handles.astop2=0;handles.filename=0;set(handles.lowpass,'Value',1);set(handles.IIR_pu,'Value',1);set(handles.fs_edit,'String',8000);set(handles.fpass2_text,'Visible','off');set(handles.fpass2_edit,'Visible','off');set(handles.fstop2_text,'Visible','off');set(handles.fstop2_edit,'Visible','off');set(handles.tip,'String','Tip:Theformmustbeallfilledinbeforefilter£¡£¡£¡');%Updatehandlesstructureguidata(hObject,handles);%UIWAITmakeshpysecondwaitforuserresponse(seeUIRESUME)%uiwait(handles.figure1);%---Outputsfromthisfunctionarereturnedtothecommandline.functionvarargout=hpysecond_OutputFcn(hObject,eventdata,handles)%varargoutcellarrayforreturningoutputargs(seeVARARGOUT);%hObjecthandletofigure%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%Getdefaultcommandlineoutputfromhandlesstructurevarargout{1}=handles.output;functionfpass_edit_Callback(hObject,eventdata,handles)%hObjecthandletofpass_edit(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstr