第10章matlab在信号与系统分析中的应用10.0引言10.110.1MATLAB语言基础10.2信号的MATLAB表示10.3用MATLAB实现系统的时域分析10.4用MATLAB实现系统的频域分析10.5用MATLAB实现连续系统的S域分析10.6用MATLAB实现离散系统的Z域分析10.7MATLAB在系统状态空间分析中的应用10.0引言1.MATLAB的概况•MATLAB的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多.•当前流行的MATLAB6.5/Simulink4.0包括拥有数百个内部函数的主包和三十几种工具包(Toolbox).工具包又可以分为功能性工具包和学科工具包.功能工具包用来扩充MATLAB的符号计算,可视化建模仿真,文字处理及实时控制等功能.学科工具包是专业性比较强的工具包,控制工具包,信号处理工具包,通信工具包等都属于此类.•开放性使MATLAB广受用户欢迎.除内部函数外,所有MATLAB主包文件和各种工具包都是可读可修改的文件,用户通过对源程序的修改或加入自己编写程序构造新的专用工具包.•MATLAB是矩阵实验室(MatrixLaboratory)之意。除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。2.MATLAB产生的历史背景在70年代中期,CleveMoler博士和其同事在美国国家科学基金的资助下开发了调用EISPACK和LINPACK的FORTRAN子程序库.EISPACK是特征值求解的FOETRAN程序库,LINPACK是解线性方程的程序库.在当时,这两个程序库代表矩阵运算的最高水平.到70年代后期,身为美国NewMexico大学计算机系系主任的CleveMoler,在给学生讲授线性代数课程时,想教学生使用EISPACK和LINPACK程序库,但他发现学生用FORTRAN编写接口程序很费时间,于是他开始自己动手,利用业余时间为学生编写EISPACK和LINPACK的接口程序.CleveMoler给这个接口程序取名为MATLAB,该名为矩阵(matrix)和实验室(labotatory)两个英文单词的前三个字母的组合.在以后的数年里,MATLABMATLAB在多所大学里作为教学辅助软件使用,并作为面向大众的免费软件广为流传.10.1MATLAB语言基础10.1.1.MATLAB的语言特点•1)。语言简洁紧凑,使用方便灵活,库函数极其丰富。2)运算符丰富。由于MATLAB是用C语言编写的,MATLAB提供了和C语言几乎一样多的运算符,灵活使用MATLAB的运算符将使程序变得极为简短。•3)MATLAB既具有结构化的控制语句(如for循环,while循环,break语句和if语句),又有面向对象编程的特性。•4)程序限制不严格,程序设计自由度大。例如,在MATLAB里,用户无需对矩阵预定义就可使用。10.1MATLAB语言基础10.1.1.MATLAB的语言特点•5)程序的可移植性很好,基本上不做修改就可以在各种型号的计算机和操作系统上运行。•6)MATLAB的图形功能强大。在FORTRAN和C语言里,绘图都很不容易,但在MATLAB里,数据的可视化非常简单。MATLAB还具有较强的编辑图形界面的能力。•7)MATLAB的缺点是,它和其他高级程序相比,程序的执行速度较慢。由于MATLAB的程序不用编译等预处理,也不生成可执行文件,程序为解释执行,所以速度较慢。•8)功能强大的工具箱是MATLAB的另一特色。•9)源程序的开放性。10.1.2MATLAB工作环境简介一、启动MATLAB三种方法:1、双击windows桌面上的MATLAB图标。2、通过”开始”菜单的”程序”子菜单的MATLAB项启动3、在MATLAB文件夹中执行MATLAB.exe二、使用MATLAB的窗口主界面包括:1、菜单项2、工具栏3、commandwindow命令窗口4、LaunchPad分类帮助文件夹5、Workspace工作空间6、CommandHistory命令的历史记录窗口7、CurrentDiretory当前目录选项三、程序编辑器通过两种方法进行编辑程序:1。在命令窗口进行编辑程序;步骤:1)启动MATLAB;2)在命令窗口打入程序语句;3)按回车键,即可运行2。建立×××.m文件,在文件中编辑程序。×××.m文件包括两种:A)命令文件B)函数文件建立×××.m文件步骤:1)启动MATLAB;2)建立函数文件:从‘File’→’New’→’m-file’(或单击‘’Newm-file);3)在文件中编辑程序注意第一行键入命令或函数文件语句:A)命令文件键入[function英文文件名]B)函数文件键入[functiony=f(x)]4)保存:从‘File’→‘save’回车键,5)运行:‘Debug’→’run’三、在命令窗口进行编辑程序(1)方向键和控制键可以编辑修改已输入的命令:回调上一行命令:回调下一行命令(2)命令窗口的分页输出•moreoff:不允许分页moreon:允许分页•more(n):指定每页输出的行数•回车前进一行,空格键显示下一页,q结束当前显示。(3)多行命令(…)•如果命令语句超过一行或者太长希望分行输入,则可以使用多行命令继续输入。•S=1-12+13+4+…9-4-18;三、变量和数值显示格式1、变量(1)变量的命名:变量的名字必须以字母开头(不能超过19个字符),之后可以是任意字母、数字或下划线;变量名称区分字母的大小写;变量中不能包含有标点符号。(2)一些特殊的变量ans:用于结果的缺省变量名i、j:虚数单位pi:圆周率nargin:函数的输入变量个数eps:计算机的最小数nargout:函数的输出变量个数inf:无穷大realmin:最小正实数realmax:最大正实数nan:不定量flops:浮点运算数(3)变量操作•在命令窗口中,同时存储着输入的命令和创建的所有变量值,它们可以在任何需要的时候被调用。如要察看变量a的值,只需要在命令窗口中输入变量的名称即可:》a2、数值显示格式•任何MATLAB的语句的执行结果都可以在屏幕上显示,同时赋值给指定的变量,没有指定变量时,赋值给一个特殊的变量ans,数据的显示格式由format命令控制。•format只是影响结果的显示,不影响其计算与存储;MATLAB总是以双字长浮点数(双精度)来执行所有的运算。•如果结果为整数,则显示没有小数;如果结果不是整数,则输出形式有:format(short):短格式(5位定点数)99.1253formatlong:长格式(15位定点数99.12345678900000formatshorte:短格式e方式9.9123e+001formatlonge:长格式e方式9.912345678900000e+001formatbank:2位十进制99.12formathex:十六进制格式四、简单的数学运算(例exp2_2.m)1、常用的数学运算符•+,—,*(乘),/(左除),\(右除),^(幂)•在运算式中,MATLAB通常不需要考虑空格;多条命令可以放在一行中,它们之间需要用分号隔开;逗号告诉MATLAB显示结果,而分号则禁止结果显示。2、常用数学函数abs,sin,cos,tan,asin,acos,atan,sqrt,exp,imag,real,sign,log,log10,conj(共扼复数)等五、MATLAB的工作空间1、MATLAB的工作空间包含了一组可以在命令窗口中调整(调用)的参数•who:显示当前工作空间中所有变量的一个简单列表•whos:则列出变量的大小、数据格式等详细信息•clear:清除工作空间中所有的变量•clear变量名:清除指定的变量2、保存和载入workspace(1)savefilenamevariables•将变量列表variables所列出的变量保存到磁盘文件filename中•Variables所表示的变量列表中,不能用逗号,各个不同的变量之间只能用空格来分隔。•未列出variables时,表示将当前工作空间中所有变量都保持到磁盘文件中。•缺省的磁盘文件扩展名为“.mat”,可以使用“-”定义不同的存储格式(ASCII、V4等)(2)loadfilenamevariables•将以前用save命令保存的变量variables从磁盘文件中调入MATLAB工作空间。•用load命令调入的变量,其名称为用save命令保存时的名称,取值也一样。•Variables所表示的变量列表中,不能用逗号,各个不同的变量之间只能用空格来分隔。•未列出variables时,表示将磁盘文件中的所有变量都调入工作空间。3、退出工作空间•quit或exit六、文件管理•文件管理的命令,包括列文件名、显示或删除文件、显示或改变当前目录等。(what、dir、type、delete、cd、which)•what:显示当前目录下所有与matlab相关的文件及它们的路径。•dir:显示当前目录下所有的文件•which:显示某个文件的路径•cdpath:由当前目录进入path目录•cd..:返回上一级目录•cd:显示当前目录•typefilename:在命令窗口中显示文件filename•deletefilename:删除文件filename七、使用帮助1、help命令,在命令窗口中显示•MATLBA的所有函数都是以逻辑群组方式进行组织的,而MATLAB的目录结构就是以这些群组方式来编排的。•helpmatfun:矩阵函数-数值线性代数•helpgeneral:通用命令•helpgraphics:通用图形函数•helpelfun:基本的数学函数•helpelmat:基本矩阵和矩阵操作•helpdatafun:数据分析和傅立叶变换函数•helpops:操作符和特殊字符•helppolyfun:多项式和内插函数•helplang:语言结构和调试•helpstrfun:字符串函数•helpcontrol:控制系统工具箱函数2、helpwin:帮助窗口3、helpdesk:帮助桌面,浏览器模式4、lookfor命令:返回包含指定关键词的那些项5、demo:打开示例窗口•矩阵生成不但可以使用纯数字(含复数),也可以使用变量(或者说采用一个表达式)。矩阵的元素直接排列在方括号内,行与行之间用分号隔开,每行内的元素使用空格或逗号隔开。大的矩阵可以用分行输入,回车键代表分号。》y=[2,4,5368]y=245368一、矩阵的输入第二节MATLAB矩阵运算及多项式处理》a=1;b=2;c=3;》x=[5bc;a*ba+cc/b]x=5.0002.0003.0002.0004.0001.5001、在命令窗口中输入(1)用线性等间距生成向量矩阵(start:step:end)》a=[1:2:10]a=13579其中start为起始值,step为步长,end为终止值。当步长为1时可省略step参数;另外step也可以取负数。2、语句生成(2)a=linspace(n1,n2,n)•在线性空间上,行矢量的值从n1到n2,数据个数为n,缺省n为100。》a=linspace(1,10,10)a=12345678910(4)一些常用的特殊矩阵单位矩阵:eye(m,n);eye(m)零矩阵:zeros(m,n);zeros(m)一矩阵:ones(m,n);ones(m)对角矩阵:对角元素向量V=[a1,a2,…,an]A=diag(V)随机矩阵:rand(m,n)产生一个m×n的均匀分别的随机矩阵(3)a=logspace(n1,n2,n)•在对数空间上,行矢量的值从10n1到10n2,数据个数为n,缺省n为50。这个指令为建立对数频域轴坐标提供了方便。》a=logspace(1,3,3)a=101001000》eye(2,3)ans=100010》zeros(2,3