《Matlab数字信号处理基础.ppt》由会员分享,可在线阅读,更多相关《Matlab数字信号处理基础.ppt(52页珍藏版)》请在三一办公上搜索。
1、第2章 Matlab数字信号处理基础,主 要 内 容,MATLAB7.0语言特点及工作环境,M文件介绍,MATLAB基本控制语句,数字信号处理常用MATLAB函数,2.1 MATLAB 7.0语言特点,1)开发环境 新的桌面提供多文档管理、个人定制桌面以及常用 命令定义快捷键;功能更强的数组编辑器和工作空间浏览器,用户可 以更方便地浏览、编辑和图形化变量;M_Lint代码分析器可以方便用户修改代码,不仅提 高了程序性能,而且增强了可维护性;改进后的编辑器可以方便用户选择执行M文件中的部 分内容。,MATLAB 7.0语言简介,2)编程 支持函数嵌套;可以用匿名函数定义单行函数;3)计算 整数算
2、法,可以计算和处理更大的整型数据集;单精度算法、线性代数、FFT和滤波,方便用户处理更 大的单精度数据;提供Linsolve函数,方便用户更快地求解线性函数;ODE求解泛函数,操作隐式差分等式和求解多点式边界 值问题。,4)图形 使用新的绘图界面,用户不必通过M函数代码就可直接在 界面窗口中交互式地创建编辑图形;用户可直接从图形窗口中生成M代码文件,方便多次重复 绘图;更强大的图形标注和处理功能,包括对象对齐、连接注 释等;数据探测工具可使用户在图形窗口中方便地查询图形上 各点的坐标值;可方便地对图形对象进行旋转、平移和缩放等变换;功能更强大的图形句柄。,5)图形用户界面 用户可使用面板和分组
3、按钮对界面控件进行分组;用户可以直接在GUIDE中访问ActiveX控件。6)文件输入/输出和外部应用程序接口 新的文件输入/输出函数支持读取更大的文本文件,可以 向Excel和HDF5文件中写入内容;支持压缩格式的MAT文件,用户可以使用较少的磁盘空间 快速保存大量的数据;在不必重启MATLAB前提下,可使用Javaaddpath函数动 态添加、删除或重载Java类;,支持COM用户接口、服务器事件和Visual Basic脚本;可基于简单的对象访问协议(SOAP)访问网页服务器;提供FTP对象用于连接FTP服务器,实现对异地文件的处理;支持Unicode国际字符集标准,MAT文件中的字符数
4、据可以 在不同语言之间共享。,2.2 MATLAB 7.0的工作环境,MATLAB7.0的工作界面主要由菜单、工具栏、当前工作目录窗口、工作空间管理窗口、历史命令窗口和命令窗口组成,如图1-1所示。点击左下角start,弹出快捷菜单,其中有工具箱、帮助和演示等多个选项,可选择需要的菜单进入相关界面。,MATLAB桌面,1)命令窗口,单击MATLAB桌面命令窗口右上角的【Unlock Command Window】按钮,可使命令窗口脱离主窗口而成为一个独立的窗口,如图所示。,MATLAB7.0的命令窗口,2)历史命令窗口,该窗口主要用于记录所有执行过的命令,在默认设置下,该窗口会保留自安装后所有
5、使用过的命令的历史记录,并标明使用时间,用户可以通过用鼠标双击某一历史记录来重新执行该命令。与命令窗口类似,该窗口也可以成为一个独立的窗口,如图所示。选中历史命令后,单击鼠标右键,弹出便捷操作菜单,通过上下文菜单,可以进行剪切、删除等操作,也可为选中的表达式或命令创建一个M文件。,3)当前工作目录窗口,在当前工作目录窗口可显示或改变当前目录,如图所示。,MATLAB7.0的当前工作目录窗口,4)工作空间管理窗口,工作空间管理窗口显示目前内存中所有的MATLAB变量的变量名、数据结构、字节数以及类型等信息,如图所示。,MATLAB7.0的工作空间管理窗口,2.3 M文件介绍,M文件分为脚本文件(
6、MATLAB scripts)和函数文件(MATLAB functions),两者在语法和使用上略有区别。,1)M文件编辑器,M文件编辑器提供了一个进行文本编辑和M文件调试的图形用户界面,如图所示。,M文件编辑器,新建一个 M 文件有以下三种途径:菜单操作(File New Script)命令操作(edit M文件名)命令按钮(快捷键)打开已有的 M 文件有四种途径:菜单操作(File Open)命令操作(edit M 文件名)命令按钮(快捷键)双击M文件名,图所示为M文件编辑器新建/打开快捷键。,M文件编辑器新建/打开快捷键,MATLAB中许多常用的函数都是函数式M文件。函数文件类似一个黑箱
7、,对用户而言,可见的只是输入和输出,这有助于程序模块化,适于构建大型程序。由函数执行的命令以及这些命令所创建的中间变量都是隐含的,除特别声明外,这些中间变量在运算过程中都是局部变量,存放在函数本身的工作空间内,不会和MATLAB基本工作空间的变量相互覆盖。,2)函数,函数文件由function语句引导,通常包含如下5个部分。,函数题头:指函数的定义行,是函数语句的第一行,在该行中定义函数名、输入变量列表及输出变量列表等。HI行:指函数帮助文本的第一行,为该函数文件的帮助主题,当使用lookfor命令时,可以查看到该行信息。,帮助信息:提供了函数的完整的帮助信息,包括HI之后 至第一个可执行的行
8、 或空行为止的所有注释语句。函数体:指函数代码段,也是函数的主体部分。注释部分:指对函数体中各语句的解释和说明文本,注 释语句是以符号%引导的。,脚本是若干命令或函数的集合,用于执行特定的功能。在MATLAB命令窗口直接输入此文件的主文件名,MATLAB可顺序执行此文件内的所有命令,不需要在其中输入参数,也不需要给出输出变量来接收处理结果。脚本的操作对象为MATLAB工作空间内的变量,脚本式M文件运行产生的所有变量都是全局变量,这些变量都驻留在MATLAB基本工作空间内,通过使用clear命令或者关闭MATLAB系统可以清除这些变量。,3)脚本,脚本文件可以理解为简单的M文件,脚本文件中的变量
9、都是全局变量。函数文件是在脚本文件的基础之上多添加了函数定义行,其代码组织结构和调用方式与对应的脚本文件截然不同。函数文件是以函数声明行“function”作为开始,如果没有特别声明,函数文件中的变量都是局部变量。函数运行完毕之后,其定义的变量将从工作区间中清除。而脚本文件只是将一系列相关的代码结合封装,没有输入参数和输出参数,即不自带参数,也不一定要返回结果。而多数函数文件一般都有输入和输出变量,并返回结果。,MATLAB中的循环语句包括for循环和while循环两种。,1)for 循环 for循环语句是流程控制语句中的基础,它以指定的次数重复执行循环体内的语句。for语句通常由循环体和循环
10、条件组成,循环体指的是重复执行的语句,而循环条件是指控制循环语句走向的语句。for 循环语法结构如下:for 循环变量=数组 循环体;end,1、循环语句,MATLAB 中的for 循环语句与其它语言中的for 循环语句相同,循环体的执行次数由数组的列数确定。,2)while循环 while循环语句与for循环语句的循环控制机制不同,前者是以条件是否满足来判断循环是否结束,而后者则是以执行次数是否达到指定值为判断循环是否结束的条件。while循环语句的一般形式为:while循环判断的语句 循环体,其中,循环判断语句为某种形式的逻辑判断表达式,当该表达式的值为真时,就执行循环体内的语句;当表达式
11、的逻辑值为假时,就退出当前的循环体。如果循环判断语句为矩阵时,当且仅当所有的矩阵元素非零时,逻辑表达式的值为真。,N2_1.m,在while循环语句中,必须有可以修改循环控制变量的命令,否则该循环语句将陷入死循环。循环语体中可以有控制退出循环的命令,如break语句。当循环体运行至该命令时,强制退出当前循环,执行循环后的其他语句。与break语句对应,MATLAB还提供了continue命令,当循环体运行至该命令时会忽略其后的循环体操作转而执行下一层次的循环。当循环控制语句为一空矩阵时,将不执行循环体的操作而直接执行其后的其他命令语句。,2、分支语句,1)if-else-end语句 常用的分支
12、结构分为单分支、双分支和多分支结构。,例程2.2 编程计算Fiboncci数组中小于10的元素之和,单分支结构if 条件式 表达式end双分支if 条件式 表达式1;else 表达式2;end,多分支if 条件式1 表达式1;elseif 条件式2 表达式2;else 表达式k;end,2)switch-case-otherwise语句语句结构如下:switch expression case value1 statements1;case value2 statements2;case valuem statementsn;otherwisestatements;end,expression
13、是一个标量或者字符串,MATLAB 首先计算expression的值,然后将它依次与各个case指令后的检测值进行比较,当比较结果为真时,就执行相应的语句组,然后跳出 switch 结构。如果所有的比较结果都为假,则执行otherwise后面的语句组,然后跳出switch 结构。otherwise指令可以不出现。与其他的程序设计语言的switch-case语句不同的是,在MATLAB语言中,当其中一个case语句后的条件为真时,switch-case语句不对其后的case语句进行判断,即使有多条case判断语句为真,也只执行所遇到的第一条为真的语句。,MATLAB基本程序控制语句,常用的波形产
14、生函数如表2-1所示。,表2-1 常用波形产生函数,数字信号处理常用MATLAB函数,1、波形产生函数,Square函数:调用方式如下,x=square(t,duty):产生指定周期、峰值为1的方波,duty为占空比,【例2-3】用square函数产生周期为1,占空比分别为50%和30%的方波。,x=sawtooth(t,width):参数width表示一个周期内最大值的位置,是该位置横坐标和周期的比值。该函数根据width取值不同产生不同形状的三角波。,Sawtooth函数:调用方式如下,【例2-4】用sawtooth函数产生周期为1的锯齿波和方波。,Sinc函数:调用方式如下,【例2-5】
15、用sinc函数产生波形。,x=sinc(t):产生sinc函数波形。,Diric函数:调用方式如下,。,【例2-6】用diric函数产生波形。,Rectpuls函数:调用方式如下,x=rectpuls(t):产生非周期、单位高度的矩形波;方波的中心在t=0处。,x=rectpuls(t,w):产生宽度为w的非周期、单位高度的矩形波。,【例2-7】用rectpuls函数产生长度为1s,宽度为0.7s的非周期矩形波。,Tripuls函数:调用方式如下,x=tripuls(t):产生非周期单位高度的三角波,三角波的中心位置在t=0处;,x=tripuls(t,width,s):产生倾斜度为s的三角波
16、。,x=tripuls(t,width):产生width宽度的三角波;,【例2-8】用tripuls函数产生长度为1s,宽度为0.6s,倾斜度分别为0和0.9的非周期三角波。,Pulstran 函数:调用方式如下,x=pulstran(t,d,func):其中参数func取值为gauspuls(高斯调制正弦信号);rectpuls(非周期方波);tripuls(非周期三角波)。该函数产生以d为采样间隔的func指定形状的冲激串;,x=pulstran(t,d,func,p1,p2):将参数p1和p2传递给func函数;x=pulstran(t,d,p,Fs):向量p表示原始序列,Fs为采样率。
17、对原始序列多次延迟相加得到输出序列。,【例2-9】用pulstran函数产生三角波冲激串。,chirp函数,chirp(t,f0,t1,f1):产生线性调频余弦信号。f0和f1分别是0时刻和t1时刻的瞬时频率。,chirp(t,f0,t1,f1,method):参数method指定不同的扫频方式,取值方式三种包括:Linear线性的quadratic二次的logarithmic对数的,【例2-10】用chirp函数产生二次扫频信号,绘出时域波形和时频图。,2、傅里叶变换函数,常用的FFT及反变换函数如下表所示。,fft函数:调用方式如下,y=fft(x):计算信号x的快速傅立叶变换y。当x的长
18、度为2的幂时,用基2算法,否则采用较慢的分裂基算法。,y=fft(x,n):计算n点FFT。当length(x)n时,截断x,否则补零。,【例2-11】产生一个正弦信号频率为60Hz,并用fft函数计算并绘出其幅度谱。,fftshift函数:调用方式如下,y=fftshift(x):如果x为向量,fftshift(x)直接将x的左右两部分交换;如果x为矩阵(多通道信号),将x的左上、右下和右上、左下四个部分两两交换。,【例2-12】产生一个正弦信号频率为60Hz,采样率为1000Hz,用fftshift将其零频位置搬到频谱中心。,例2-12 60Hz正弦信号的幅度谱及搬移后的频谱,ifft函数
19、:调用方式如下,y=ifft(x):计算信号x的傅立叶反变换。,【例2-13】计算方波信号的傅立叶反变换。,例2-13 矩形信号及其IFFT变换,y=ifft(x,n):计算n点IFFT。如果length(x)n,以n为长度截短x,否则补零。,3、滤波器分析与实现函数,常用滤波器分析与实现函数,conv:调用方式如下,【例2-14】用conv求两个向量的卷积。,impz:调用方式如下,h,t=impz(b,a,n):返回n点冲激响应。,c=conv(a,b):返回向量a、b的卷积c。,h,t=impz(b,a):b、a分别为系统传递函数的分子和分母的系数向量。返回系统(b,a)的冲激响应h和相
20、应的时间轴向量t。,h,t=impz(b,a,n,Fs):指定冲激响应采样点间隔1/Fs。Fs为相对频率,缺省值为1。,【例2-15】计算线性系统(b,a)的冲激响应:,图2-15 系统的冲激响应,zplane:调用方式如下 zplane(z,p):绘制系统零极点图,“o”表示零点,“x”表示极点。z,p分别为零点和极点向量。zplane(b,a):b、a分别为系统传递函数的分子和分母系 数向量。,【例2-16】计算线性系统(b,a)的零点和极点。,图2-16 系统的零极点图,abs:调用方式如下 y=abs(x):返回复数向量x的幅值向量y。,【例2-17】绘出一个正弦信号的傅立叶变换的幅度谱。,图2-17 正弦信号傅立叶变换的幅度谱,angle:调用方式如下 p=angle(h):返回复数向量h的相位向量p。,【例2-18】绘出方波信号的相频特性。,图2-18 方波信号的相频特性,filter:调用方式如下,y=filter(b,a,x):计算输入信号x经过传递函数分子分母系数向量(降幂排列)为b、a的滤波器后的输出y。y,zf=filter(b,a,x):返回最终的状态向量zf。,=filter(b,a,x,zi):指定滤波器的初始条件zi。,【例2-19】计算低通滤波器的冲激响应。,例2-19 Chebyshev I型低通滤波器冲激响应,小结,