1数字信号处理实验指导书电信分院电子教研室2前言数字信号处理是是电子信息工程专业的一门专业基础课。本课程主要研究如何对信号进行分析、变换、综合、估计与识别等加工处理的基本理论和方法,数字信号处理实验是验证、巩固和补充课堂讲授的理论知识的必要环节。通过实验,使学生巩固所学基本理论,掌握最基本的数字信号处理的理论和方法,提高综合运用所学知识,提高计算机编程的能力。进一步加强学生独立分析问题、解决问题的能力、综合设计及创新能力的培养,同时注意培养学生实事求是、严肃认真的科学作风和良好的实验习惯,为今后的工作打下良好的基础。数字信号处理实验指导书针对每个实验介绍了MATLAB语言数字信号处理工具箱中的相应函数,举例并附有相应的程序。为配合课堂理论教学,实验内容安排仍从认识性和验证性入手,逐步增加设计性和工程应用性内容,达到训练实验技能和积累工程实际应用经验之目的。数字信号处理实验成绩按百分制核定。预习占20%,实验过程占40%,实验报告占40%。3实验要求在实验过程中,要求学生做到:(1)预习实验指导书有关部分,认真做好实验内容的准备工作,就实验可能出现的情况提前作出思考和分析,需要计算的参数提前完成计算工作,并认真写出预习报告。(2)仔细观察实验过程中图形随参数的变化,记录图形变化的主要情况,作出必要说明和分析。(3)认真书写实验报告并在规定的时间内把实验报告交给辅导教师。实验报告包括实验目的和要求,实验情况及其分析。对需要编程的实验,写出程序设计说明,给出源程序框图和清单。(4)遵守机房纪律,服从辅导教师指挥,爱护实验设备。(5)实验课程不迟到。如有事不能出席,所缺实验一般不补。实验验收分为两个部分。第一部分是上机操作,包括检查程序运行和即时提问。第二部分是提交书面的实验报告。每个实验都应当在规定的时间内完成并检查通过,过期视为未完成该实验,扣该实验操作成绩。为避免期末集中检查方式产生的诸多不良问题,希望同学们抓紧时间,合理安排,认真完成。4目录第一部分MATLAB简介........................................................................5一、MATLAB简介及其安装使用说明.............................................5二、Matlab基本语句........................................................................11三、Matlab基本数值运算................................................................15四、Matlab函数、及其调用方法....................................................18第二部分实验内容................................................................................22实验一MATLAB软件的使用.........................................................22实验二信号、系统及系统响应......................................................23实验三离散系统的时域分析..........................................................27实验四线性卷积与循环卷积的计算..............................................33实验五应用快速离散傅里叶变换对信号进行频谱分析..............38实验六利用FFT实现快速卷积.....................................................44实验七离散系统的变换域分析......................................................49实验八用双线性变换法设计IIR滤波器.......................................54实验九用窗口法设计FIR滤波器..................................................60实验十用频率采样法设计FIR滤波器..........................................65实验十一IIR和FIR滤波器过滤信号的实现及比较....................68实验十二研究性实验......................................................................71实验1图像信号的抽取与插值.............................................71实验2语音及音乐信号的采样、滤波...................................72实验3双音多频(DTMF)信号的合成和识别....................73实验4音乐信号处理...............................................................745第一部分MATLAB简介一、MATLAB简介及其安装使用说明1、MATLAB程序设计语言简介MATLAB,MatrixLaboratory的缩写,是由Mathworks公司开发的一套用于科学工程计算的可视化高性能语言,具有强大的矩阵运算能力。与大家常用的Fortran和C等高级语言相比,MATLAB的语法规则更简单,更贴近人的思维方式,被称之为“草稿纸式的语言”。截至目前,MATLAB已经发展到7.x版,适用于所有32位的Windows操作系统,按NTFS(NT文件系统)格式下完全安装约需850MB。MATLAB软件主要由主包、仿真系统和工具箱三大部分组成。2、MATLAB应用入门(1)MATLAB的安装与卸载MATLAB软件在用户接口设计上具有较强的亲和力,其安装过程比较典型,直接运行光盘中的安装向导支撑程序SETUP.exe,按其提示一步步选择即可。MATLAB自身带有卸载程序,在其安装目录下有uninstall子目录,运行该目录下的uninstall.exe即可;也可以通过Windows系统的安装卸载程序进行卸载。(2)MATLAB的启动与退出MATLAB安装完成后,会自动在Windows桌面上生成一个快捷方式,它是指向安装目录下\bin\win32\matlab.exe的链接,双击它即可来到MATLAB集成环境的基本窗口,通常称之为命令窗口。MATLAB的退出与普通WIN32的程序一样,值得一提的是它有一个自身专有的快捷键Ctrl+Q。(3)MATLAB界面简介图1MATLAB基本界面——命令窗口6图2图37图4图58图6指令历史图71)菜单栏菜单栏中包括File、Edit、View、Web、Window和Help六个菜单项。这里着重介绍File、help项。9File项:数据输入/输出的接口,包括10个子项,这里重点介绍其中的5个子项:New:新建文件项。有四个选择:MFile(*.M,文本格式的MATLAB程序文件,可以直接通过文件名的方式在MATLAB环境下解释运行;Figure(图形);Model(仿真模型文件)和GUI(可视化界面文件)。Open:打开所有MATLAB支持的文件格式,系统将自动识别并采用相应的程序对文件进行处理。例如,打开一个.m文件,系统将自动打开M文件编辑器对它进行编辑。SetPath...:设置工作路径。可以打开路径设置(SetPath)对话框(图2),将用户自己建立的目录加入MATLAB的目录系统中,以便所编制的文件能够在MATLAB环境中直接调用。图8路径设置对话框单击AddFolder...按钮可以将你的一个文件夹加入到系统路径中;AddwithSubfolders...允许把一个文件夹包括其所有的子文件夹加入到系统路径中。这两种操作均可以直观地在右侧的路径栏内看到结果。选中一个加入的文件夹,你可以利用MovetoTop(移至所有路径的最前面),MoveUp(上移一个),MoveDown(下移一个),MovetoBottom(移至所有路径的最后面)等四个按钮将改变文件在系统路径中的排列位置以利于对文件的搜索使用,也可以利用Remove按钮将其删除。对路径操作完毕后,按Save按钮予以保存;Help项:10MatlabHelp:打开以html超文本形式存储的的帮助文件主页;Demos:打开matlab演示窗主页;AboutMatlab:Matlab注册图标、版本、制造商和用户信息;图9Help选项图10Help窗口2)命令行区11进行通用操作,数值计算,编程和数据类型,输入输出,绘图,用户界面等命令,例如,命令:help函数名(*.m文件);edit编辑函数、文件对输入命令的解释MATLAB按以下顺序进行:①检查它是否是工作空间中的变量,是则显示变量内容。②检查它是否是嵌入函数,是则运行之。③检查它是否是子函数。④检查它是否是私有函数。⑤检查它是否是位于MATLAB搜索路径范围内的函数文件或脚本文件。请注意,如果有两个以上的方案与输入的命令相匹配,MATLAB将只执行第一个匹配。二、Matlab基本语句1、程序控制语句(1)循环语句MATLAB的循环语句包括for循环和while循环两种类型。1)for循环语法格式:for循环变量=起始值:步长:终止值循环体end起始值和终止值为一整形数,步长可以为整数或小数,省略步长时,默认步长为1。执行for循环时,判定循环变量的值是否大于(步长为负时则判定是否小于)终止值,不大于(步长为负时则小于)则执行循环体,执行完毕后加上步长,大于(步长为负时则小于)终止值后退出循环。例1给矩阵A、B赋值。MATLAB语句及运行结果如下:12k=5;a=zeros(k,k)%矩阵赋零初值form=1:kforn=1:ka(m,n)=1/(m+n-1);endendfori=m:-1:1b(i)=i;end运行结果:a=1.00000.50000.33330.2500?0.20000.50000.33330.25000.20000.16670.33330.25000.20000.16670.14290.25000.20000.16670.14290.12500.20000.16670.14290.12500.111112?3452)while循环语法格式:while表达式循环体end其执行方式为:若表达式为真(运算值非0),则执行循环体;若表达式为假(运算结果为0),则退出循环体,执行end后的语句。例2a=3;whileaa=a-1end输出:a=2a=1a=0(2)条件转移语句13条件转移语句有if和switch两种。1)if语句MATLAB中if语句的用法与其他高级语言相类似,其基本语法格式有以下几种:格式一:if逻辑表达式执行语句end格式二:if逻辑表达式执行语句1else执行语句2end格式三:if逻辑表达式执行语句else?if逻辑表达式执行语句end2)switch语句switch语句的用法与其他高级语言相类似,其基本语法格式为:switch表达式(标量或字符串)case值1语句1case值2语句2otherwise语句nend2、绘图语句常用的MATLAB绘图语句有figure、plot、subplot、stem等,图形修饰语句有title、axis、text等。(1)figure14figure有两种用法,只用一句figure命令,会创建一个新的图形窗口,并返回一个整数型的窗口编号。figu