《计算机仿真技术及CAD基于MATLAB的控制系统第1章》由会员分享,可在线阅读,更多相关《计算机仿真技术及CAD基于MATLAB的控制系统第1章(171页珍藏版)》请在金锄头文库上搜索。
1、MATLAB的基本数学函数和常用命令的使用;MATLAB的M文件的建立与使用;MATLAB的基本输入/输出函数及其应用;MATLAB的外部命令调用方法;MATLAB的条件转移语句、循环语句等常用控制语句的使用;MATLAB的基本绘图、字符添加、图形控制和图形修饰命令;MATLAB的基本数值运算方法;MATLAB的基本符号运算方法;MATLAB图形用户界面(GUI)的简单设计;MATLAB编译器的基本应用方法。第第1 1章章 仿真软件仿真软件MATLABMATLAB本章内容1n1.1 MATLAB的功能特点n1.2 MATLAB的基本操作n1.3 MATLAB的控制语句n1.4 MATLAB的绘
2、图功能n1.5 MATLAB的数值运算n1.6 MATLAB的符号运算n1.7 MATLAB的图形界面n1.8 MATLAB编译器第第1 1章章 仿真软件仿真软件MATLABMATLAB2 1.1 MATLAB的功能特点 1.1.1 MATLAB1.1.1 MATLAB简介简介n 在科学研究和工程应用中,为了克服一般语言对大量的数学运算,尤其当涉及矩阵运算时,编程难、调试麻烦等困难,美国MATLAB软件开发公司于1967年构思并开发了MATLAB(MATRIX Laboratory,即矩阵实验室),经过不断更新和扩充,该公司于1992年推出了具有划时代意义的MATLAB4.0版本,并于1993
3、年推出了其微机版。n 到2007年为止先后推出了MATLAB4.x、MATLAB 5.x、MATLAB 6.x和MATLAB 7.x版,使之应用范围越来越广。 3n 用MATLAB编程运算与人进行科学计算的思路和表达方式完全一致,所以使用MATLAB进行数学运算就象在草稿纸上演算数学题一样方便。n 万能的、科学的数学运算“演算纸”n 万能的计算器 1.1 MATLAB的功能特点 1.1.1 MATLAB1.1.1 MATLAB简介简介4n MATLAB大大降低了对使用者的数学基础和计算机语言知识的要求,既使用户不懂C或FORTRAN这样的程序设计语言,也可使用MATLAB轻易的再现C或FORT
4、RAN语言几乎全部的功能 ,设计出功能强大、界面优美、稳定可靠的高质量程序来,而且编程效率和计算效率极高。 1.1 MATLAB的功能特点 1.1.1 MATLAB1.1.1 MATLAB简介简介5n 尽管MATLAB开始并不是为控制理论与系统的设计者们编写的,但以它“语言”化的数值计算、强大的矩阵处理及绘图功能 、灵活的可扩充性和产业化的开发思路很快就为自动控制界研究人员所瞩目。目前,在自动控制、图像处理、语言处理、信号分析、振动理论、优化设计、时序分析和系统建模等领域。 1.1 MATLAB的功能特点 1.1.1 MATLAB1.1.1 MATLAB简介简介6 由著名专家与学者以MATLA
5、B为基础开发的实用工具箱极大地丰富了MATLAB的内容,较为常见的MATLAB工具箱主要有:通讯工具箱(Communications Toolbox);控制系统工具箱(Control Systems Toolbox);数据获得工具箱(Data Acquisition Toolbox);数据库工具箱(Database Toolbox);滤波器设计工具箱(Filter Design Toolbox);模糊逻辑工具箱(Fuzzy Logic Toolbox);图象处理工具箱(Image Processing Toolbox); 1.1 MATLAB的功能特点 1.1.1 MATLAB1.1.1 MA
6、TLAB简介简介7映射工具箱(Mapping Toolbox);神经网络工具箱(Neural Network Toolbox);优化工具箱(Optimization Toolbox);鲁棒控制工具箱(Robus Control Toolbox);信号处理工具箱(Signal Processing Toolbox);统计学工具箱(Statistics Toolbox);系统辨识工具箱(System Identification Toolbox);小波分析工具箱(Wavelet Toolbox)。 1.1 MATLAB的功能特点 1.1.1 MATLAB1.1.1 MATLAB简介简介8n 模型输
7、入与仿真环境Simulink更使MATLAB为控制系统的仿真与CAD中的应用打开了崭新的局面,并使得MATLAB目前已经成为国际上最流行的控制系统计算机辅助设计的软件工具。n MATLAB不仅流行于控制界,在生物医学工程、语言处理、图像信号处理、雷达工程、信号分析、计算机技术等各行各业中都有极广泛的应用。 1.1 MATLAB的功能特点 1.1.1 MATLAB1.1.1 MATLAB简介简介9n 严格地说,MATLAB并不是一种计算机语言,它仅仅是一种高级的科学分析与计算软件。因为,用它编写出来的程序并不能脱离MATLAB环境而执行,但从其功能上讲,MATLAB已经完全具备了计算机语言的结构
8、与性能,所以我们这里将其简称为“MATLAB语言”。n 本书以目前的最新版本MATLAB7.5.0(R2007b)为基础来进行叙述。 1.1 MATLAB的功能特点 1.1.1 MATLAB1.1.1 MATLAB简介简介101.1.2 MATLAB1.1.2 MATLAB操作界面操作界面 MATLAB启动后将出现如图1-1所示的操作界面。由图1-1可知,MATLAB的操作界面由功能菜单、工具栏、工作窗口和开始按钮等组成。1.1 MATLAB的功能特点111. MATLAB的工作窗口的工作窗口在默认状态下,MATLAB的工作窗口由命令窗口(CommandWindow)、历史命令(Command
9、History)窗口、工作空间(Workspace)浏览器窗口和当前工作目录(CurrentDirectory)窗口等组成。在MATLAB命令窗口中的“”标志为MATLAB的命令提示符,“|”标志为输入字符提示符。如果用户是第一次使用MATLAB,则建议首先在命令行中键入demo命令,它将启动MATLAB的演示程序,用户可以在这些演示程序中领略到MATLAB所提供的强大的运算和绘图功能。1.1.2 MATLAB1.1.2 MATLAB操作界面操作界面 1.1 MATLAB的功能特点122. 开始按钮开始按钮开始按钮(Start)位于MATLAB操作界面的左下角,单击这个按钮后,会出现MATLA
10、B的操作菜单。这个菜单上半部分的选项包含MATLAB的各种交互操作界面,下半部分的选项的主要功能是窗口设置、访问MATLAB公司的网页和查看帮助文件等。3. 功能菜单功能菜单为了更好地利用MATLAB,在其操作界面中设置了以下多个功能菜单。1.1.2 MATLAB1.1.2 MATLAB操作界面操作界面 1.1 MATLAB的功能特点13*File文件操作菜单New新建M文件、图形、模型和图形用户界面Open打开.m,.fig,.mat,.mdl,.cdr等文件CloseCommandWindow关闭命令窗口ImportData从其他文件导入数据SaveWorkspaceAs保存工作空间数据到
11、相应的路径文件中窗口SetPath设置工作路径Preferences设置命令窗口的属性PageSetup页面设置Print设置打印机属性PrintSelection选择打印ExitMATLAB退出MATLAB操作界面1.1.2 MATLAB1.1.2 MATLAB操作界面操作界面 1.1 MATLAB的功能特点14*Edit编辑菜单Undo撤消上一步操作Redo重新执行上一步操作Cut剪切Copy复制Paste粘贴PasteSpecial粘贴特定内容SelectAll全部选定Delete删除所选对象Find查找所需对象FindFiles查找所需文件ClearCommandWindow清除命令窗
12、口的内容ClearCommandHistory清除历史窗口的内容ClearWorkspace清除工作区的内容15*Debug调试菜单OpenM-FileswhenDebugging调试时打开M文件Step单步调试StepIn单步调试进入子函数StepOut单步调试跳出子函数Continue连续执行到下一断点ClearBreakpointsinAllFiles清除所有文件中的断点StopifErrors/Warnings出错或报警时停止运行ExitDebugMode退出调试模式1.1.2 MATLAB1.1.2 MATLAB操作界面操作界面 1.1 MATLAB的功能特点16*Desktop桌面
13、菜单UnlockCommandWindow命令窗口设为当前全屏活动窗口DesktopLayout桌面设计SaveLayout保存桌面设计OrganizeLayout组织桌面设计CommandWindow显示命令窗口CommandHistory显示历史窗口CurrentDirectory显示当前工作目录Workspace显示工作空间Help帮助窗口Profiler轮廓图窗口Toolbar显示/隐藏工具栏ShortcutsToolbar显示/隐藏快捷工具栏Titles显示/隐藏标题17*Window窗口菜单CloseAllDocuments关闭所有文档CommandWindow选定命令窗口为当前活
14、动窗口CommandHistory选定历史窗口为当前活动窗口CurrentDirectory选定当前工作目录为当前活动窗口Workspace选定工作空间为当前活动窗口1.1.2 MATLAB1.1.2 MATLAB操作界面操作界面 1.1 MATLAB的功能特点184. 工具栏工具栏MATLAB操作界面工具栏中的工具“”分别用来建立M文件编辑窗口和打开编辑文件窗口;工具“”对应的功能与Windows操作系统类似;工具“”分别用来快捷启动Simulink库浏览窗口、GUIDE模版窗口和轮廓图窗口;工具“”分别用来快捷设置当前目录和返回到当前目录的父目录。1.1.2 MATLAB操作界面操作界面
15、1.1 MATLAB的功能特点191.2 MATLAB的基本操作1.2.1 MATLAB1.2.1 MATLAB语言的结构语言的结构20n MATLAB命令窗口就是 MATLAB语言的工作空间,因为MATLAB的各种功能的执行必须在此窗口下才能实现,在这种环境下输入的MATLAB语句称为“窗口命令”。n 所谓窗口命令,就是在上述环境下输入的MATLAB语句,并直接执行它们完成相应的运算、绘图等。n MATLAB语句的一般形式为n 变量名表达式1.2 MATLAB的基本操作1.2.1 MATLAB1.2.1 MATLAB语言的结构语言的结构21n其中 等号右边的表达式可由操作符或其它字符、函数和
16、变量名组成,它可以是MATLAB允许的数学或矩阵运算,也可以包含MATLAB下的函数调用;等号左边的变量名为MATLAB语句右边表达式的返回值语句所赋值的变量的名字。n 在调用函数时,MATLAB允许一次返回多个结果,这时等号左边的变量名需用 括起来,且各个变量名之间用逗号分隔开,如果左边的变量名缺省时返回值自动赋给ans。1.2 MATLAB的基本操作1.2.1 MATLAB1.2.1 MATLAB语言的结构语言的结构22表1-1MATLAB中的算术运算符算术运算符意义算术运算符意义加左除减右除*乘幂 MATLAB中使用的算术运算符如表1-1所示。对于矩阵来说,这里左除和右除表示两种不同的除
17、数矩阵和被除数矩阵的关系。对于标量,两种除法运算的结果相同,如1/4和41有相同的值0.25。常用的十进制符号如小数点、负号等,在MATLAB中也可以同样使用,表示10的幂次要用符号e或E,如:3、-99、0.0001、1.6e-20、6.2e23。 1.2 MATLAB的基本操作1.2.1 MATLAB1.2.1 MATLAB语言的结构语言的结构23n 在MATLAB中变量名必须以字母开头,之后可以是任意字母、数字或者下划线(不能超过19个字符),但变量中不能含有标点符号。变量名区分字母的大小写,同一名字的大写与小写被视为两个不同的变量。一般说来,在MATLAB下变量名可以为任意字符串,但M
18、ATLAB保留了一些特殊的字符串如表1-2所示。1.2 MATLAB的基本操作1.2.1 MATLAB1.2.1 MATLAB语言的结构语言的结构24特殊变量取值特殊变量取值ans默认变量名jj=-1inf无穷大,如1/0flops浮点运算数eps最小数,如1/infnargin函数的输入变量数目NaN不定量,如0/0nargout函数的输出变量数目pi圆周率realmin最小的可用正实数ii=-1readmax最大的可用正实数表1-2MATLAB中的特殊变量1.2 MATLAB的基本操作1.2.1 MATLAB1.2.1 MATLAB语言的结构语言的结构25n MATLAB命令语句能即时执行
19、,它不是输入完全部MATLAB命令语句经过编译、连接形成可执行文件后才开始执行,而是每输入完一条命令,MATLAB就立即对其处理,并得出中间结果,完成了MATLAB所有命令语句的输入,也就完成了它的执行,直接便可得到最终结果。从这一点来说,MATLAB清晰地体现了类似“演算纸”的功能。例如na=5;nb=6;nc=a*b,结果显示C=301.2 MATLAB的基本操作1.2.1 MATLAB1.2.1 MATLAB语言的结构语言的结构26n MATLAB语句既可由分号结束,也可由逗号或换行号结束,但它们的含义是不同的。如果用分号 “;”结束,则说明除了这一条命令外还有下一条命令等待输入,MAT
20、LAB这时将不立即显示运行的中间结果,而等待下一条命令的输入,如以上前两条命令;如果以逗号 “,”或回车结束,则将把左边返回的内容全部显示出来,如以上后两条命令。n 当然在任何时候也可输入相应的变量名来查看其内容。1.2 MATLAB的基本操作1.2.1 MATLAB1.2.1 MATLAB语言的结构语言的结构27n 在MATLAB中,几条语句也可以出现在同一行中,只要用分号或逗号将它们分割。例如na=5;b=6;c=a*b,d=c+2n这时可得与上面相同的结果。1.2 MATLAB的基本操作1.2.1 MATLAB1.2.1 MATLAB语言的结构语言的结构28n MATLAB工作空间中的变
21、量在退出MATLAB时会丢失,如果在退出MATLAB前想将工作空间中的变量保存到文件中,则可以调用save命令来完成,该命令的调用格式为nsave 文件名 变量列表 其它选项 n注意 这一命令中不能使用逗号,不同的元素之间只能用空格来分隔。1.2 MATLAB的基本操作1.2.1 MATLAB1.2.1 MATLAB语言的结构语言的结构29n例如,想把工作空间中的a,b,c变量存到mydat.mat文件中去,则可用下面的命令来实现。nsave mydat a b cn 这里将自动地使用文件扩展名mat。如果想将整个工作空间中所有的变量全部存入该文件,则应采用下面的命令。nsave mydat1
22、.2 MATLAB的基本操作1.2.1 MATLAB1.2.1 MATLAB语言的结构语言的结构30n 当然这里的mydat也可省略,这时将工作空间中的所有变量自动地存入到文件matlab.mat中了。应该指出的是,这样存储的文件均是按照二进制的形式进行的,所以得出的文件往往是不可读的,如果想按照ASCII码的格式来存储数据,则可以在命令后面加上一个控制参数-ascii,该选项将变量以单精度的ASCII码形式存入文件中去,如果想获得高精度的数据。则可使用控制参数:-ascii -double。1.2 MATLAB的基本操作1.2.1 MATLAB1.2.1 MATLAB语言的结构语言的结构31
23、n MATLAB提供的load命令可以从文件中把变量调出并重新装入到MATLAB的工作空间中去,该函数的调用格式与save命令同。n 当然工作空间中变量的保存和调出也可利用菜单项中的File|Save Workspace As 和File|Open命令来完成。1.2 MATLAB的基本操作1.2.1 MATLAB1.2.1 MATLAB语言的结构语言的结构32n查看目前的工作空间中都有哪些变量名,则可以使用who命令来完成。n例如当MATLAB的工作空间中有a , b , c ,d四个变量名时:nwhoyour variable are: a b c d 了解这些变量的具体细节,使用whos命
24、令来查看。1.2 MATLAB的基本操作1.2.1 MATLAB1.2.1 MATLAB语言的结构语言的结构33n使用clear命令删除其中一些不再使用的变量名,这样可使得整个工作空间更简洁,节省一部分内存,例如想删除工作空间中的a ,b两个变量,则可以使用下面的命令nclear a bn 如果想删除整个工作空间中所有的变量,则可以使用以下命令nclearn MATLAB可以使用上下光标键来前后查看已经键入的命令。1.2 MATLAB的基本操作1.2.1 MATLAB1.2.1 MATLAB语言的结构语言的结构34 n 但仅靠一条一条地输入语句,MATLAB难以实现复杂功能,为了实现诸如循环、
25、条件、分支等功能,MATLAB利用了m文件,m文件是由一系列的MATLAB语句组成。1.2 MATLAB的基本操作1.2.1 MATLAB1.2.1 MATLAB语言的结构语言的结构35n MATLAB实际上可以认为是一种解释性语言,用户可以在MATLAB工作环境下一条一条地键入命令,也可以直接键入用MATLAB的语言编写的m文件名,或它们结合起来使用,这样MATLAB软件对此命令或m文件中各条命令进行翻译,然后在MATLAB环境下对它进行处理,最后返回运算结果。所以说MATLAB语言的结构可用下式进行描述n MATLAB语言窗口命令m文件1.2 MATLAB的基本操作1.2.1 MATLAB
26、1.2.1 MATLAB语言的结构语言的结构36n 由于MATLAB本身可以被认为是一高效的语言,所以用它可编写出具有特殊意义的磁盘文件来,这些磁盘文件是由一系列的MATLAB语句组成,它既可能是一系列窗口命令语句,又可以是由各种控制语句和说明语句构成的函数文件。 n 由于它们都是由ASCII码构成的, 其扩展名均为“.m”,故统称为m文件。1.2 MATLAB的基本操作1.2.2 MATLAB1.2.2 MATLAB的磁盘文件的磁盘文件37n1.1.文本文件文本文件n 文本文件是一系列的MATLAB语句组成,它类似于DOS下的批处理文件,在MATLAB的提示符下直接键入文本文件名,便可自动执
27、行文件中的一系列命令,直至给出最终结果。n 文本文件在工作空间中运算的变量为全局变量。1.2 MATLAB的基本操作1.2.2 MATLAB1.2.2 MATLAB的磁盘文件的磁盘文件381.2 MATLAB的基本操作1.2.2 MATLAB1.2.2 MATLAB的磁盘文件的磁盘文件例例1-1 1-1 求函数在x=-4时的值。解 首先建立以下文本文件ex1_1.mn当以上文本文件建立后,在MATLAB 命令窗口中输入命令nx=-4;ex1_139x1= 4x2= -62y= -62 这里执行的中间变量x1,x2都被保存下来,这与下面的函数文件是不同的。1.2 MATLAB的基本操作1.2.2
28、 MATLAB1.2.2 MATLAB的磁盘文件的磁盘文件40n2.2.函数文件函数文件n 函数文件的功能是建立一个函数,且这个函数可以同MATLAB的库函数一样使用,它与文本文件不同,在一般情况下不能单独键入函数文件的文件名来运行一个函数文件,它必须由其它语句来调用,函数文件允许有多个输入参数和多个输出参数值,其基本格式如下nfunction f1,f2,f3,=fun(x, y, z,)n 注释说明语句n 函数体语句n其中 x, y, z,是形式输入参数;而f1,f2,f3,是返回的形式输出参数值;fun是函数名。1.2 MATLAB的基本操作1.2.2 MATLAB1.2.2 MATLA
29、B的磁盘文件的磁盘文件41n 实际上,函数名一般就是这个函数文件的磁盘文件名,注释语句段的内容同样可用help命令显示出来。n 调用一个函数文件只需直接使用与这个 函数一致的格式ny1,y2,y3,=fun(i,j,k,)n其中 i,j,k,是相应的实际输入参数,而y1,y2,y3,是相应的实际输出参数值。1.2 MATLAB的基本操作1.2.2 MATLAB1.2.2 MATLAB的磁盘文件的磁盘文件421.2 MATLAB的基本操作1.2.2 MATLAB1.2.2 MATLAB的磁盘文件的磁盘文件例例1-2求函数在x1=-2, x2=3, x3=1时的值例例 首先建立函数文件ex1_2.
30、m43n 当以上函数文件ex1_2.m建立后,在MATLAB命令窗口中输入以下命令na1=-2;a2=3;a3=1;nb1,b2=ex1_2(a1,a2,a3)n则显示结果为b1= 16b2= 81.2 MATLAB的基本操作1.2.2 MATLAB1.2.2 MATLAB的磁盘文件的磁盘文件44n 函数文件中定义的变量为局部变量,也就是说它只在函数内有效。即在该函数返回后,这些变量会自动在MATLAB工作空间中清除掉,这与文本文件是不同的,但可通过命令 nglobal 变量n来定义一个全局变量。n 函数文件与文本文件另一个区别在于其第一行是由function开头的,且有函数名和输入形式参数与
31、输出形式参数,若是没有这一行的磁盘文件就是文本文件 。1.2 MATLAB的基本操作1.2.2 MATLAB1.2.2 MATLAB的磁盘文件的磁盘文件45n 由于m文件具有普通的文本格式,因而可以用任何编辑程序建立和编辑,但一般最常用、而且最为方便地是使用MATLAB命令窗口的File|New或File|Open菜单项对m文件进行建立和编辑。1.2 MATLAB的基本操作1.2.2 MATLAB1.2.2 MATLAB的磁盘文件的磁盘文件46nMATLAB提供了丰富的库函数,库函数是根据系统编制好了的,提供用户直接使用的函数,MATLAB中常用的基本数学函数,如表1-3所示。n 除了基本函数
32、外,不同版本的MATLAB还增加了不同的有专门功能的库函数,也称工具箱。例如通讯工具箱、控制系统工具箱和信号处理工具箱等等。n 对于各种函数的功能和调用方法可使用MATLAB的联机帮肋help来查询,其使用格式为nhelp 函数名1.2 MATLAB的基本操作1.2.3 MATLAB1.2.3 MATLAB的库函数的库函数47函数名含义函数名含义sin()正弦sqrt()平方根cos()余弦real()实部tan()正切imag()虚部asin()反正弦conj()复数共轭acos()反余弦round()4舍5入到整数atan()反正切fix()舍入到最接近0的整数atan2()第四象反正切f
33、loor()舍入到最接近-的整数sonh()双曲正弦ceil()舍入到最接近的整数cosh()双曲余弦sign()符号函数tanh()双曲正切rem()留数exp()自然指数bessel()贝塞尔函数log()自然对数gamma()伽吗函数logl0()以10为底的对数rat()有理逼近随机数abs()绝对值或模rand()表1-3MATLAB的基本函数481.2.5 1.2.5 输入与输出函数输入与输出函数n 如果用户想在计算的过程中给计算机输入一个参数,则可以使用input( )函数来进行,该函数的调用格式为n 变量名input(提示信息,选项)n这里提示信息可以为一个字符串显示,它用来提
34、示用户输入什么样的数据,input( )函数的返回值赋给等式左边的变量名。 1.2 MATLAB的基本操作49n例如, 用户想输入A矩阵,则可以采用下面的命令来完成nA=input(Enter matrix A=);n执行该命令时首先给出Enter matrixA=提示信息,然后等待用户从键盘按MATLAB格式输入矩阵,并把此值赋给A。1.2 MATLAB的基本操作1.2.5 1.2.5 输入与输出函数输入与输出函数50n MATLAB 提供的命令窗口输出函数主要有disp( )函数,其调用格式为n disp(变量名)n其中变量名既可以为字符串,也可以为变量矩阵。例如ns= Hello Wor
35、ld,s= Hello Worlddisp(s) Hello World1.2 MATLAB的基本操作1.2.5 1.2.5 输入与输出函数输入与输出函数51n MATLAB提供了较实用的字符串处理及转换的函数,例如int2str( )函数就可以方便在将一个整形数据转换成字符串形式,该函数的调用格式为ncstr=int2str(n)n其中 n为一个整数,而该函数将返回一个相关的字符串cstr。n例如 num的数值为num=15,而在输出中还想给出其它说明性附加信息,则可利用下面的语句ndisp (The value of num is ,int2str(num), !ok)这样可得 The v
36、alue of num is 15 !ok1.2 MATLAB的基本操作1.2.5 1.2.5 输入与输出函数输入与输出函数52n 与int2str( ) 函数的功能及调用方式相似,MATLAB还提供了num2str( )函数,可以将给出的实型数据转换成字符串的表达式,最终也可以将该字符串输出出来。例如给绘制的图形赋以数字的标题时可采用下面的命令nc=(70-32)/1.8;ntitle(Room temperature is ,num2str(c), degrees C)则会在当前图形上加上题头标注 Room temperature is 21.1111 degrees C1.2 MATLA
37、B的基本操作1.2.5 1.2.5 输入与输出函数输入与输出函数53n MATLAB可以使用format命令来改变显示格式,其调用格式为nformat 控制参数n其中 控制参数决定显示格式,控制参数如表1-5表示。1.2 MATLAB的基本操作1.2.6 1.2.6 数值显示格式数值显示格式54控制参数意义例100/3short5位有效数字,同默认显示33.3333long长格式,15位有效数字33.33333333333334shorte短格式,5位有效数字的浮点数3.3333e+001longe长格式,15位有效数字的浮点数3.333333333333334e+001hex十六进制格式40
38、40aaaaaaaaaaabbank2个十进制位33.33+正、负或零+rat有理格式100/3表1-5format命令的控制参数551.3 MATLAB的控制语句n MATLAB编写出来的程序结构简单,可读性强。n和其它高级语言一样,MATLAB也提供了条件转移语句、循环语句等一些常用的控制语句,从而使得MATLAB语言的编程显得十分灵活。561.3.1 循环语句循环语句nMATLAB中可以使用两种循环语句:n for语句和while语句。n1. for语句的基本格式为for 循环变量表达式1:表达式3:表达式2 循环语句组 end1.3 MATLAB的控制语句57例例 MATLAB程序 e
39、x1_3.m运行结果mysun= 50501.3 MATLAB的控制语句1.3.1 1.3.1 循环语句循环语句58n2while语句的基本结构为 while (条件式) 循环体条件组 endn 其执行方式为,若条件式中的条件成立,则执行循环体的内容,执行后再判断表达式是否仍然成立,如果表达式不成立,则跳出循环,向下继续执行。1.3 MATLAB的控制语句1.3.1 1.3.1 循环语句循环语句59n例如对于上面的例子,如果改用while循环语句,则可以写出下面的程序n sum=0;i=1;n while (iy=0 0.48 0.84 1 0.91 0.6 0.14;nplot(y)n则显示
40、如图1-2所示曲线。1.4.1 1.4.1 二维图形二维图形73n 如果x和y是两个等长向量,那么 plot(x,y) 将绘制一条x和y的之间关系的线性坐标图。例如nx=0:0.1:2*pi; y=sin(x);plot(x,y)n则显示如图1-3所示曲线。 图1-2图1-3742多重线型n 在同一图形中可以绘制多重线型,基本命令格式为nplot(x1,y1,x2,y2,xn,yn)n 以上命令可将x1对y1,x2对y2,xn对yn的图形绘制在一个图形中,而且分别采用不同的颜色或线型。例如以下命令可显示如图1-4所示曲线。nx=0:0.1:2*pi;plot(x,sin(x),x,cos(x)
41、.4 MATLAB的绘图功能1.4.1 1.4.1 二维图形二维图形75图1-4.4 MATLAB的绘图功能1.4.1 1.4.1 二维图形二维图形763.图形修饰及文本标注 n MATLAB中对于同一图形中的多重线,不仅可分别定义其线型,而且可分别选择其颜色,带有选项的曲线绘制命令的调用格式为n plot(x1, y1,选项,x2, y2,选项2, xn, yn,选项n)n其中 x1,x2,xn为x轴变量,y1, y2, yn为y轴变量,选项如下表1-6所示。.4 MATLAB的绘图功能1.4.1 1.4.1 二维图形二维图形77选项意义选项意义实线.用点号绘制各数据点虚线叉号线.点划线。圆
42、圈线:点线星号线y黄色g绿m洋红色b蓝c青色w白r红k黑表1-6MATLAB的绘图命令的各种选项.4 MATLAB的绘图功能1.4.1 1.4.1 二维图形二维图形78n 上表中的线型和颜色选项可以同时使用,例如n x=0:0.1:2*pi; nplot(x,sin(x),-g, x,cos(x),-.r).4 MATLAB的绘图功能1.4.1 1.4.1 二维图形二维图形79n 绘制完曲线后,MATLAB还允许用户使用它提供的特殊绘图函数来对屏幕上已有的图形加注释、题头或坐标网格。例如 n x=0:0.1:2*pi;y=sin(x);plot(x, y)ntitle(Figure Examp
43、le)给出题头nxlabel(This is x axis) x轴的标注nylabel(This is y axis) y轴的标注ngrid增加网格nlegend(sin(x) 加图例.4 MATLAB的绘图功能1.4.1 1.4.1 二维图形二维图形80nMATLAB还允许在图形窗口的位置利用line( ) 和text( )命令画直线或写字符串,它们的调用格式分别为n line(x, y)及text(x, y,chstr,选项)n其中 line( )函数在给定的图形窗口上绘制一条由向量x 和y定义的折线,text( )函数是在指定的点(x,y)处写一个chstr绘出的字符串,而选项决定x,y
44、坐标的单位,如选项为sc,则x,y表示规范化的窗口相对坐标,其范围为0到1,即左下角坐标为(0,0),而右上角的坐标为(1,1)。 .4 MATLAB的绘图功能1.4.1 1.4.1 二维图形二维图形81n 用text( )命令可以在图形中的任意位置加上文本说明,但是必须知道其位置坐标,而利用另一个函数gtext( ),则可以用鼠标来对要添加的文本字符串定位。在MATLAB的工作空间中键入下列命令ngtext(sin(x)n 那么在图中,将会出现一个十字叉 ,用鼠标拖动它到添加文本的位置,单击鼠标,gtext( )命令中的文本字符串sin(x)就自动添加到指定的位置。.4 MATLAB的绘图功
45、能1.4.1 1.4.1 二维图形二维图形82n4.图形控制n MATLAB允许将一个图形窗口分割成nm部分,对每一部分可以用不同的坐标系单独绘制图形,窗口分割命令的调用格式为n subplot(n,m,k)n其中 n,m分别表示将这个图形窗口分割的行列数,k表示每一部分的代号,例如想将窗口分割成43个部分,则右下角的代号为 12,MATLAB最多允许99的分割。.4 MATLAB的绘图功能1.4.1 1.4.1 二维图形二维图形83n 尽管MATLAB可以自动根据要绘制曲线数据的范围选择合适的坐标系,使得曲线能够尽可能清晰地显示出来,但是,如果觉得自动选择的坐标还不合适时,还可以用手动的方式
46、来选择新的坐标系,调用函数的格式为n axis(xmin, xmax, ymin, ymax)n 另外,MATLAB还提供了清除图形窗口命令clg、保持当前窗口的图形命令hold、放大和缩小窗口命令zoom等。.4 MATLAB的绘图功能1.4.1 1.4.1 二维图形二维图形84n5. 特殊坐标图形n 除了基本的绘图命令plot( )外,MATLAB还允许绘制极坐标曲线、对数坐标曲线、条形图和阶梯图等。n极坐标曲线绘制函数的调用格式为n polar(theta,rho,选项)n其中 theta和rho分别为长度相同的角度向量和幅值向量。选项的内容和plot( )函数的基本一致。.4 MATL
47、AB的绘图功能1.4.1 1.4.1 二维图形二维图形85n对数和半对数曲线绘制函数的调用格式分别为nsemilogx(x,y,选项) n 绘制x轴为对数标度的图形,选项同plot( )nsemilogy(x,y,选项) n 绘制y轴为对数标度的图形,选项同plot( )nloglog(x,y,选项) n 绘两个轴均为对数标度的图形,选项同上n即semilogx( )仅对横坐标进行对数变换,而纵坐标仍保持线性坐标;而semilogy( )只对纵坐标进行对数变换,而横坐标仍保持线性坐标;loglog( )则分别对横纵坐标都进行对数变换(最终得出全对数坐标的曲线来)。选项的定义与 plot( )
48、函数的完全一致。.4 MATLAB的绘图功能1.4.1 1.4.1 二维图形二维图形86n 与线性坐标向量的选取不同,在MATLAB下还给出了一个实用的函数logspace( )按对数等间距的分布来产生一个向量,该函数的调用格式为nx=logspace(n,m,z)n其中 10n和10m分别表示向量的起点和终点,而z表示需要产生向量点个数,当这参数忽略时,z将采用默认值50。.4 MATLAB的绘图功能1.4.1 1.4.1 二维图形二维图形87例例1-6利用图形窗口分割方法将下列极坐标方程=cos(/3)+1/9用四种绘图方式画在不同的窗口中。解解MATLAB程序ex1_6.m则显示如图1-
49、5所示曲线。.4 MATLAB的绘图功能1.4.1 1.4.1 二维图形二维图形88图1-589图1-6例例1-7 将一个周期内的正弦值在两种步长下利用bar()函数绘制出来。解MATLAB程序ex1_7.m则显示如图1-6所示曲线。90阶梯图的调用命令stairs()与bar()命令相类似,惟一的区别在于它绘出的图形中没有条形图中所给出的铅直线,而产生阶梯状图形,这种图形对于统计或数据采集的绘图十分直观且有用。.4 MATLAB的绘图功能1.4.1 1.4.1 二维图形二维图形91n6.利用鼠标绘制图形n MATLAB允许利用鼠标来点选屏幕点,命令格式为n x, y,button=ginpu
50、t(n)n其中 n 为选择点的数目,返回的x, y 向量分别存储被点中的 n个点的坐标,而button 亦为一个n 维向量,它的各个分量为鼠标键的标号,如button(i)=1 ,则说明第i 次按下的是鼠标左键,而该值为 2 或3则分别对应于中键和右键。92n例例1-8 用鼠标左键绘制折线,利用鼠标中键或右键中止绘制。n解解 MATLAB程序n ex1_8.m93n 与二维图形相对应,MATLAB提供了plot3( )函数,它允许在一个三维空间内绘制出三维的曲线,该函数的调用格式为n plot3(x, y, z,选项)n其中 x, y, z为维数相同的向量,分别存储曲线的三个坐标的值,选项的意
51、义同plot( )函数。例利用以下命令,可得到图1-7所示曲线。 nt=0:pi/50:10*pi;nplot3(sin(t),cos(t),t).4 MATLAB的绘图功能1.4.2 1.4.2 三维图形三维图形94图1-7.4 MATLAB的绘图功能1.4.2 1.4.2 三维图形三维图形95n例利用以下命令,可得到图1-8所示曲线。 nx=-8:0.5:8;y=x;nx1=ones(size(y).* x;y1=y.*ones(size(x);nR=sqrt(x1.2+ y1.2)+eps;nz=sin(R)./R;mesh(x,y,z) .4 MATLAB的绘图功能1.4.2 1.4.
52、2 三维图形三维图形96图1-8.4 MATLAB的绘图功能1.4.2 1.4.2 三维图形三维图形971.5 MATLAB的数值运算n MATLAB具有强大的数值能力,它不仅能对矩阵和向量进行相应的运算,而且也可处理多项式的解、数据分析、函数的极值、线性方程组的解、函数的微积分和函数绘图等问题。981.5.1 1.5.1 矩阵运算矩阵运算n MATLAB的基本数据单元是不需要指定维数的复数矩阵,它提供了各种矩阵的运算与操作,因它既可以对矩阵整体地进行处理,也可以对矩阵的某个或某些元素进行单独地处理,所以在MATLAB环境下矩阵的操作同数的操作一样简单。1.5 MATLAB的数值运算991.
53、1. 矩阵的实现矩阵的实现n 在MATLAB语言中不必描述矩阵的维数和类型,它们是由输入的格式和内容来确定的,例如当n A1 2时,把A当作一个2维向量;n A5时,把A当作一个标量;n A12i时,把A当作一个复数。1.5.1 1.5.1 矩阵运算矩阵运算1.5 MATLAB的数值运算100n1) 矩阵的赋值n矩阵可以用以下几种方式进行赋值n* 直接列出元素的形式;n* 通过语句和函数产生;n* 建立在文件中;n* 从外部的数据文件中装入。1.5.1 1.5.1 矩阵运算矩阵运算1.5 MATLAB的数值运算101n(1) 简单矩阵的输入n比较小的简单矩阵可以使用直接排列的形式输入,把矩阵的
54、元素直接排列到方括号中,每行内的元素间用空格或逗号分开,行与行的内容用分号隔开。n在MATLAB下的输入方式为nA=1, 2, 3; 4, 5, 6; 7, 8, 9n或 A=1 2 3; 4 5 6; 7 8 9n都将得相同的结果1.5.1 1.5.1 矩阵运算矩阵运算1.5 MATLAB的数值运算102n 对于比较大的矩阵,可以用回车键代替分号,对每一行的内容分行输入,也可利用续行符号(),把一行的内容分两行来输入。n 如前面的矩阵还可以等价地由下面两种方式来输入。nA= 1 2 3 ; 4 5 6 n 7 8 9n或 A=1 2 3 ;4 5 n 6; 7 8 9n 输入后A矩阵将一直保
55、存在工作空间中,除非被替代和清除,在MATLAB的命令窗口中可随时查看其内容。1.5.1 1.5.1 矩阵运算矩阵运算1.5 MATLAB的数值运算103n(2) 利用语句或函数产生矩阵n 在MATLAB中,矩阵也可利用下例语句来产生ns1:s2:s3n其中,s1为起始值;s3为终止值;s2为步矩。使用这样的命令就可以产生一个由s1开始,以步距s2自增,并终止于s3的行向量,如1.5.1 1.5.1 矩阵运算矩阵运算1.5 MATLAB的数值运算104ny=0:pi/4:piy= 0.7854 1.5708 2.3562 3.1416如果S2省略,则可以认为自增步距为1,例如x=1:5结果显示
56、:x=123451.5.1 1.5.1 矩阵运算矩阵运算1.5 MATLAB的数值运算105nsize( )函数:测取一个矩阵的维数,调用格式为nn, m=size(A)n其中 A为要测试的矩阵名,返回的两个参数n和m分别为A矩阵的行数和列数。n 当要测试的变量是一个向量时,当然仍可由size( )函数来得出其大小,更简洁地,用户可以使用length( )函数来求出,该函数的调用格式为nn=length(x)n其中 x为要测试的向量名,而返回的n为向量x的元素个数。1.5.1 1.5.1 矩阵运算矩阵运算1.5 MATLAB的数值运算106n 如果对一个矩阵A用length(A)函数测试,则返
57、回该矩阵行列的最大值,即该函数等效于max(size(A)。1.5.1 1.5.1 矩阵运算矩阵运算1.5 MATLAB的数值运算107n2) 矩阵的元素n MATLAB的矩阵元素可用任何表达式来描述,它既可以是实数,也可以是复数,例如nB= -1/3 1.3; sqrt(3) (1+2+3)*i B -0.3333 1.3000 1.7321 0+6.0000i MATLAB允许把矩阵作为元素来建立新的矩阵,例如,利用A矩阵通过下面的语句C= A;10,11,121.5.1 1.5.1 矩阵运算矩阵运算1.5 MATLAB的数值运算108n MATLAB还允许对一个矩阵的单个元素进行赋值和操
58、作,例如如果想将A矩阵的第2行第3列的元素赋为100,则可通过下面的语句来完成nA(2,3)=100 A=12 34 5 10078 9 这时将只改变此元素的值,而不影响其它元素的值。1.5.1 1.5.1 矩阵运算矩阵运算1.5 MATLAB的数值运算109n 如果给出的行数或列数大于原来矩阵的范围,则MATLAB将自动扩展原来的矩阵,并将扩展后未赋值的矩阵元素置为0。例如如果想把矩阵A的第4 行第5列元素的值定义为8,就可以通过下面语句来完成。nA(4,5)=8 A= 1 2 3 0 0 4 5 100 0 0 7 8 9 0 0 0 0 0 0 8110n3) 特殊矩阵的实现n 在MAT
59、LAB中特殊矩阵可以利用函数来建立。n(1) 单位矩阵函数eye( )n基本格式 n Aeye(n) n 产生一个n阶的单位矩阵An或 Aeye(size(B) n 产生与B矩阵同阶的单位矩阵A1.5.1 1.5.1 矩阵运算矩阵运算1.5 MATLAB的数值运算111n(2)零矩阵函数zeros( )n(3) 1矩阵函数ones( )n(4) 随机元素矩阵函数rand( )n(5)对角矩阵函数diag( )n(6) 伴随矩阵函数compan( )n(7) 上三角矩阵函数triu( )和下三角矩 阵函数tril( )1.5.1 1.5.1 矩阵运算矩阵运算1.5 MATLAB的数值运算1122
60、. 2. 矩阵的基本运算矩阵的基本运算n 矩阵运算是MATLAB的基础,MATLAB的矩阵运算功能十分强大,并且运算的形式和一般的数学表示十分相似。n1)矩阵的转置n 矩阵转置的运算符为“ ”。例如nA=1 2 3;4 5 6;B= A B = 1 4 2 5 3 61.5.1 1.5.1 矩阵运算矩阵运算1.5 MATLAB的数值运算1132)矩阵的加和减n 矩阵的加减法的运算符为“”和“”。矩阵只有同阶方可进行加减运算,标量可以和矩阵进行加减运算但应对矩阵的每个元素施加运算。例如nA=1 2 3;4 5 6; B=A+1B= 2 3 4 5 6 71.5.1 1.5.1 矩阵运算矩阵运算1
61、.5 MATLAB的数值运算1143)矩阵的乘法n 矩阵的乘法运算符为“*”。n 当两个矩阵中前一矩阵的列数和后一矩阵的行数相同时,可以进行乘法进行运算,这与数学上的形式是一致的。例nCA*B;n 在MATLAB中还可进行矩阵和标量相乘,其结果为标量与矩阵中的每个元素分别相乘。1.5.1 1.5.1 矩阵运算矩阵运算1.5 MATLAB的数值运算1154)矩阵的除法n 矩阵的除法有两种运算符“”和“/”,分别表示左除和右除。n 一般地讲,x= AB是A*x=B的解,x=B/A是x*A=B的解,通常ABB/A, 而AB=inv(A)*B, B/A= B*inv(A)。1.5.1 1.5.1 矩阵
62、运算矩阵运算1.5 MATLAB的数值运算1165)矩阵的乘方n 矩阵的乘方运算符为“”。n 一个方阵的乘方运算可以用AP来表示 。P为正整数,则A的P次幂即为A矩阵自乘P次。如果P为负整数,则可以将A自乘 P次,然后对结果进行求逆运算,就可得出该乘方结果。如果P是一个分数,例如Pmn,其中n和m均为整数,则首先应该将A矩阵自乘n次,然后对结果再开m次方。1.5.1 1.5.1 矩阵运算矩阵运算1.5 MATLAB的数值运算1176)矩阵的翻转对nm维矩阵A:B=fliplr(A) %命令将矩阵A进行左右翻转再赋给B,即bijai,m+1-j,C=flipud(A) %命令将矩阵A进行上下翻转
63、再赋给C,即cija an+1-i,j,D=rot90(A) %命令将矩阵A进行旋转90度后赋给D,即dijaj,m+1-I。1.5.1 1.5.1 矩阵运算矩阵运算1.5 MATLAB的数值运算1183.3.矩阵的特殊运算矩阵的特殊运算 矩阵的特殊运算包括以下内容。n1 ) 矩阵行列式矩阵行列式n n MATLAB求矩阵行列式函数的调用格式为n det(A)1.5.1 1.5.1 矩阵运算矩阵运算1.5 MATLAB的数值运算119n2) 矩阵求逆矩阵求逆nMATLAB提供了一个求取逆矩阵的函数inv( ),其调用格式为n inv(A)1.5.1 1.5.1 矩阵运算矩阵运算1.5 MATL
64、AB的数值运算120n4) 矩阵的秩矩阵的秩n n MATLAB提供了一个内部函数rank( )来用数值方法求取一个已知矩阵的秩,其调用格式为n k=rank(A)1.5.1 1.5.1 矩阵运算矩阵运算1.5 MATLAB的数值运算121n5 )矩阵的三角分解矩阵的三角分解n 矩阵的三角分解又称为LU分解,它的目的是将一个矩阵A分解成一个下三角矩阵L和一个上三角矩阵U的乘积,亦即可以写成ALU。n 在MATLAB下也给出了矩阵的LU分解函数lu( ),该函数的调用格式为n L,U=lu(A)1.5.1 1.5.1 矩阵运算矩阵运算1.5 MATLAB的数值运算122n8) 矩阵的特征值与特征
65、向量矩阵的特征值与特征向量n V,D=eig(A)n其中 A为要处理的矩阵,D为一个对角矩阵,其对角线上的元素为矩阵A的特征值,而每个特征值对应的V矩阵的列为该特征值的特征向量,该矩阵是一个满秩矩阵,它满足AVVD,且每个特征向量各元素的平方和(即2范数)均为1。n9) 矩阵的特征多项式、特征方程和特征根矩阵的特征多项式、特征方程和特征根n MATLAB提供了求取矩阵特征多项式系数的函数poly( ),其调用格式为n P=poly(A)1.5.1 1.5.1 矩阵运算矩阵运算1.5 MATLAB的数值运算123n其中 A为给定的矩阵,返回值P为一个行向量,其各个分量为矩阵A的降幂排列的特征多项
66、式系数。即 n P= a 0 a 1 a nn MATLAB中根据矩阵特征多项式求特征根的函数为roots( ),其调用格式为n V=roots(P)n其中 P为特征多项式的系数向量,而V为特征多项式的解,即原始矩阵的特征根。1.5.1 1.5.1 矩阵运算矩阵运算1.5 MATLAB的数值运算1241.5.21.5.2 MATLABMATLAB的向量运算的向量运算n 虽然在MATLAB中向量和矩阵在形式上有很多的一致性,但它们实际上遵循着不同的运算规则。MATLAB向量运算符由矩阵运算符前面加一点“.”来表示,如“.*”、“./”和“.”等。1.5 MATLAB的数值运算125n1. 1.
67、向量的加减向量的加减n 向量的加、减运算与矩阵的运算相同,所以“”和“”既可被向量接收又可被矩阵接收。1.5.2 MATLAB1.5.2 MATLAB的向量运算的向量运算1.5 MATLAB的数值运算126n2. 2. 向量的乘法向量的乘法n 向量乘法的操作符为“.*”。如果x,y两向量具有相同的维数,则x.*y表示x和y单个对应元素之间的对应相乘。例如nx=1 2 3; y=4 5 6;z=x.*yz= 4 10 18 127但是对于矩阵可以使用向量运算符号,这时实际上就相当于把矩阵看成了向量进行运算。例如对于两个维数相同的A,B矩阵,CA.*B表示A和B矩阵的相应元素之间直接进行乘法运算,
68、然后将结果赋给C矩阵,把这种运算称为矩阵的点积运算,两个矩阵之间的点积是它们对应元素的直接运算,它与矩阵的乘法是不同的。例如A=123;456;789;B=234;567;890;C=A.*B结果显示C=261220304256720128n3. 3. 向量的除法向量的除法n 向量除法的操作符为“./”或“.”。它们的运算结果一样。n例如对前面给出的x和y向量nz=y./ xz= 4.0000 2.5000 2.0000 对于向量x.y和y./x一样,将得到相同的结果,这与矩阵的左、右除是不一样的,因向量的运算是它们对应元素间的运算。 对于矩阵也可使用向量的除法操作符,这时就相当于把矩阵看成向
69、量进行运算。 129n4. 4. 向量的乘方向量的乘方n 向量乘方的运算符为“.”。向量的乘方是对应元素的乘方,在这种底与指数均为向量的情况下,要求它们的维数必须相同。例如nx=1 2 3; ny=4 5 6;nz= x.y z= 1 32 729 它相当于 z=1 2 34 5 6=14 25 361301.5.3 1.5.3 关系和逻辑运算关系和逻辑运算n1关系运算nMATLAB常用的关系操作符见表1-8表示。n 表1-8 关系运算符 关系操作符意义关系操作符意义小于大于等于小于等于等于大于=不等于1.5 MATLAB的数值运算131n 函数find( )在关系运算中很有用,它可以在矩阵中
70、找出一些满足一定关系的数据元素。例如n A=1:9; B=A4n结果显示:B =n0 0 0 0 1 1 1 1 1C=A(A4) C = 5 6 7 8 9或 C=find(A4) C = 5 6 7 8 91.5 MATLAB的数值运算1.5.3 1.5.3 关系和逻辑运算关系和逻辑运算1322.逻辑运算n操作符有 (与)、|(或)和(非)。n它们通常用于元素或01矩阵的逻辑运算。n与和或运算符可比较两个标量或两个同阶矩阵,对于矩阵,逻辑运算符是作用于矩阵中的元素。运算结果信息也用“0”和“1”表示,逻辑操作符认定任何非零元素都表示为真。给出1为真,0为假。1.5 MATLAB的数值运算1
71、.5.3 1.5.3 关系和逻辑运算关系和逻辑运算133n 非是一元操作符,当A非零时,A返回的信息为0,当A为零时, A返回信息为1。nA=1:9;C=(A4) C= 1 1 1 1 0 0 0 0 0C=(A4)&(Ap1=15032;p2=00165;p=p1+p21371.5 MATLAB的数值运算1.5.4 1.5.4 多项式运算多项式运算2)多项式的乘法利用函数conv()来实现,其调用格式为 p=conv(p1,p2)例1-12求以下两个多项式f1(x)=x4+5x3+3x+2,f2(x)=x2+6x+5的和。解MATLAB命令如下p1=15032;p2=165;p=conv(p
72、1,p2)当多个多项式执行乘法运算时,可重复使用conv()函数138例1-13 求多项式f(x)=(x+1)2(x2+6x+5)的展开式 MATLAB命令如下p=conv(1,1,conv(1,1,1,6,5)p = 1 8 18 16 51391.5 MATLAB的数值运算1.5.4 1.5.4 多项式运算多项式运算3)多项式的除法利用函数deconv()来实现,其调用格式为 p,r=deconv(p1,p2)1401.5 MATLAB的数值运算1.5.4 1.5.4 多项式运算多项式运算3多项式的值及多项式的导数多项式求值函数polyval()多项式求导函数polyder()调用格式分别
73、为 f0=polyval(p,x0)dp=polyder(p)多项式矩阵的求值函数polyvalm(),其调用格式为fA=polyvalm(p,A)1411.5 MATLAB的数值运算1.5.4 1.5.4 多项式运算多项式运算4多项式的求解利用函数roots()来实现,其调用格式为r=roots(p)1421.6 MATLAB的符号运算MATLAB的优点不仅在于其强大的数值运算功能,而且也在于其强大的符号运算功能。MATLAB的符号运算是通过集成在MATLAB中的符号数学工具箱(SymbolicMathToolbox)来实现的。它可完成几乎所有的符号运算功能,如符号表达式的生成、复合和化简;
74、符号矩阵的求解;符号微积分的求解;符号函数的画图;符号代数方程的求解;符号微分方程的求解等。143在MATLAB中的符号数学工具箱中,符号表达式是代表数字、函数和变量的MATLAB字符串或字符串数组,它不要求变量要有预先确定的值。符号表达式可以是符号函数或符号方程。其中,符号函数没有等号,而符号方程必须有等号。MATLAB在内部把符号表达式表示成字符串,以与数字区别。符号表达式可由以下三种方法生成。1.6.1 1.6.1 符号表达式的生成符号表达式的生成1.6 MATLAB的符号运算1441用单引号生成符号表达式符号表达式同字符串一样可利用单引号来直接设定。如fun=sin(x)2用函数sym
75、()生成符号表达式在MATLAB可自动确定变量类型的情况下,可不用函数sym()来显示生成符号表达式。但在某些情况下,特别是在建立符号数组时,必须要用函数sym()来将字符串转换成符号表达式。如A=sym(sin(x)b;cd)1.6.1 1.6.1 符号表达式的生成符号表达式的生成1.6 MATLAB的符号运算1453用命令syms生成符号表达式在MATLAB中,利用命令syms只能生成符号函数,而不能生成符号方程。1.6.1 1.6.1 符号表达式的生成符号表达式的生成1.6 MATLAB的符号运算146例例1-22求函数的拉氏变换式。解解MATLAB命令如下symsKtT;fun=K*(
76、exp(-t/T),G=laplace(fun)结果显示:fun=K*exp(-t/T)G=K/(s+1/T)1.6.1 1.6.1 符号表达式的生成符号表达式的生成1.6 MATLAB的符号运算1471符号表达式的提取分子/分母运算在MATLAB中,如果符号表达式为有理分式的形式或可展开为有理分式的形式,则可通过函数numden()来提取符号表达式中的分子与分母。其调用格式如下nem,den=numden(f)其中,f表示所求符号表达式;nem和den表示返回所得的分子与分母。1.6.2 1.6.2 符号表达式的基本运算符号表达式的基本运算1.6 MATLAB的符号运算148 f=sym(x
77、+3)/(x2+3*x+2);num,den=numden(f) num = x+3 den = x2+3*x+21492符号表达式的基本代数运算符号表达式的加、减、乘、除四则运算及幂运算等基本的代数运算,与表达式的数值运算几乎完全一样,即可直接采用“+”,“-”,“*”,“/”和“”符号进行加、减、乘、除及幂运算。同时符号表达式的加、减、乘、除及幂运算也可分别由函数symadd(),symsub(),symmul(),symdiv()及sympow()来实现。其中求和函数symadd()的调用格式为:h=symadd(f,g)1.6.2 1.6.2 符号表达式的基本运算符号表达式的基本运算1
78、.6 MATLAB的符号运算1503符号表达式与数值表达式的相互转换在MATLAB中,利用函数numeric()(仅适用于MATLAB6.5及以前的版本)或eval()可将符号表达式转换成数值表达式。反之,函数sym()可将数值表达式转换成符号表达式。例f=abs(-1)+sqrt(1)/2,p=eval(f),n=sym(p)运行结果:f=abs(-1)+sqrt(1)/2p=1.5000n=3/21.6.2 1.6.2 符号表达式的基本运算符号表达式的基本运算1.6 MATLAB的符号运算1514符号表达式的化简函数simple()可按有关数学规则把符号表达式化简成最简形式,其调用格式如下
79、:y=simple(f)其中,f表示化简前符号表达式;y表示按有关规则化简后的符号表达式。1.6.2 1.6.2 符号表达式的基本运算符号表达式的基本运算1.6 MATLAB的符号运算152符号微积分包括符号序列求和、符号极限、符号微分和符号积分等运算。1符号序列求和(例题1_23)利用符号序列求和函数symsum()来实现,其调用格式为:y=symsum(f,x,a,b)%求符号表达式f在指定变量x取遍a,b中所有整数和yy=symsum(f,x)%求符号表达式f在指定变量x取遍0,x-1中所有整数和yy=symsum(f,a,b)%求符号表达式f对独立变量从a到b的所有整数和y1.6.3
80、1.6.3 符号表达式的微积分符号表达式的微积分1.6 MATLAB的符号运算1532符号极值符号极限由函数limit()来实现,其调用格式为:y=limit(f,x,a)%求符号表达式f对变量x趋于a时的极值yy=limit(f,a)%求符号表达式f对独立变量趋于a时的极值yy=limit(f)%求符号表达式f对独立变量在a=0时的极值yy=limit(f,x,a,right)%求符号表达式f对变量x从右边趋于a时的极值yy=limit(f,x,a,left)%求符号表达式f对变量x从左边趋于a时的极值y1543符号微分符号微分由函数diff()来实现。函数diff()可同时计算数值微分与符
81、号微分,MATLAB能根据其输入参数的类型(数值或符号字符串),自动对其进行数值微分或符号微分。其调用格式为:y=diff(f)%求符号表达式f对独立变量的微分yy=diff(f,n)%求符号表达式f对独立变量的n次微分yy=diff(f,x)%求符号表达式f对变量x的微分yy=diff(f,x,n)%求符号表达式f对变量x的n次微分y1.6.3 1.6.3 符号表达式的微积分符号表达式的微积分1.6 MATLAB的符号运算1554符号积分符号积分由函数int()来实现。积分比微分复杂的多。很多情况下,积分不一定能成功。当MATLAB进行符号积分找不到原函数时,它将返回未经计算的函数。函数in
82、t()的调用格式为:y=int(f)%求符号表达式f对独立变量的不定积分yy=int(f,x)%求符号表达式f对变量x的不定积分yy=int(f,a,b)%求符号表达式f对独立变量从a到b的定积分yy=int(f,x,a,b)%求符号表达式f对变量x从a到b的定积分y1.6.3 1.6.3 符号表达式的微积分符号表达式的微积分1.6 MATLAB的符号运算156符号表达式变换包括Laplace变换及其反变换、Z变换及其反变换、Fourier变换及其反变换。1Laplace变换及其反变换求解Laplace变换及其反变换的函数laplace()和ilaplace(),其调用格式分别为:F=lapl
83、ace(f,t,s)f=ilaplace(F,s,t)其中,f表示时域函数f(t);t表示时间变量;F表示频域函数F(s);s表示频域变量。1.6.4 1.6.4 符号表达式的变换符号表达式的变换1.6 MATLAB的符号运算1572Z变换及其反变换在MATLAB中,给出了求解Z变换及其反变换的函数ztrans()和iztrans(),其调用格式分别为:F=ztrans(f,n,z)f=iztrans(F,z,n)其中,f表示时域序列f(n)或时间函数f(t);n表示时间序列;F表示Z域函数F(z);z表示Z域变量。1.6.4 1.6.4 符号表达式的变换符号表达式的变换1.6 MATLAB的
84、符号运算1583Fourier变换及其反变换在MATLAB中,给出了求解Fourier变换及其反变换的函数fourier()和ifourier(),其调用格式分别为:F=fourier(f,t,w)f=ifourier(F,w,t)其中,f表示时间函数f(t);t表示时间变量;F表示频域函数F(w);w表示频域变量。1.6.4 1.6.4 符号表达式的变换符号表达式的变换1.6 MATLAB的符号运算1591.6.5符号表达式的求解符号方程的求解包括符号代数方程的求解和符号微分方程的求解等。1符号代数方程求解利用函数solve()对其进行求解。函数solve()的调用格式为:x,y,z,=so
85、lve(eq1,eq2,eq3,a,b,c,)或x,y,z,=solve(eq1,eq2,eq3,a,b,c,)x,y,z,=solve(exp1,exp2,exp3,a,b,c,)其中,eq1,eq2,eq3,表示符号方程;exp1,exp2,exp3,仅表示符号表达式;a,b,c,是符号方程的求解变量名;x,y,z,是符号方程的解赋值的变量名。1602符号微分方程求解利用函数dsolve()对其进行求解。函数dsolve()的调用格式为:y1,y2,=dsolve(eq1,eq2,.,cond1,cond2,.,x)或y1,y2,=dsolve(eq1,eq2,.,cond1,cond2,
86、.,x)y1,y2,=dsolve(exp1,exp2,.,cond1,cond2,.,x)其中,eq1,eq2,.表示所求符号微分方程,或不含“等号”的符号微分表达式(此时函数是对eq1=0,eq2=0,求解);exp1,exp2,仅表示符号微分表达式;cond1,cond2,.表示初始条件或边界条件;x表示独立变量,其中当x省略时,表示独立变量为t;y1,y2,表示输出量。1.6.5 1.6.5 符号表达式的求解符号表达式的求解1.6 MATLAB的符号运算1611.7 MATLAB的图形界面作为强大的科学计算软件,MATLAB也提供了图形用户界面(GUI)的设计和开发功能。MATLAB中
87、的基本图形用户界面对象分为3类:用户界面控件对象(uicontrol)、下拉式菜单对象(uimenu)和内容式菜单对象(uicontextmenu)。其中,函数uicontrol()能建立按钮、列表框、编辑框等图形用户界面对象;uimenu()能建立下拉式菜单和子菜单等图形用户界面对象;uicontextmenu()能建立内容式菜单用户界面对象。1621.启动GUIBuilder在MATLAB命令窗口中,可以用以下三种方法启动GUIBuilder。(1)在MATLAB的命令窗口中直接键入guide命令;(2)在MATLAB工作窗口中,利用菜单命令FileNewGUI;(3)在MATLAB左下角
88、“Start”菜单中,单击“MATLAB”子菜单中的“GUIDE(GUIBuilder)”选项。1.7 MATLAB的图形界面163选择以上任意一种方法,便可首先打开GUI设计工具的对象设计编辑器界面,如图所示。1641.8 MATLAB编译器利用MATLAB编译器,不仅可以把M文件编译成MEX文件(扩展名为.dll)或独立应用的EXE程序(扩展名为.exe),减少对语言环境本身的依赖性;而且可以通过编译,隐藏自己开发的算法,防止修改其内容。1651利用C文件创建MEX文件如果要在MATLAB的当前工作目录中,生成一个与C源代码程序同名的MEX文件,只需要简单地在MATLAB命令窗口输入以下命
89、令。mexfilename.c以上命令中的filename.c为当前工作目录中将要创建MEX文件的C源代码程序名。1.8 MATLAB编译器1.8.1 1.8.1 创建创建MEXMEX文件文件1662利用M文件创建MEX文件如果要在MATLAB的当前工作目录中,生成一个与M文件同名的MEX文件,只需要简单地在MATLAB命令窗口输入以下命令:mcc-xfilename.m1)由MATLAB函数文件生成MEX文件当MATLAB的M文件为函数文件funname.m时,在MATLAB命令窗口中,利用以下命令可直接在当前目录中生成与函数文件同名的MEX函数文件。mccxfunname.m1.8 MAT
90、LAB编译器1.8.1 1.8.1 创建创建MEXMEX文件文件1672)由MATLAB文本文件生成MEX文件当MATLAB的M文件为文本文件filename.m时,首先要在文本文件的开头加一行“functionfilename”,然后再在MATLAB命令窗口中,利用以下命令生成与文本文件同名的MEX文件。mccxfilename.m1.8 MATLAB编译器1.8.1 1.8.1 创建创建MEXMEX文件文件1681利用C文件创建EXE文件如果要在MATLAB的当前目录中,生成一个与C源代码程序同名的EXE文件,只需要简单地在MATLAB命令窗口输入以下命令:mbuildfilename.c
91、以上命令中的filename.c为将要编译成EXE文件的C源代码程序名。1.8 MATLAB编译器1.8.2 1.8.2 创建创建EXEEXE文件文件1692利用M文件创建EXE文件MATLAB在对M文件转换时,它首先被编译器翻译成C/C+源代码文件。然后自动调用命令mbuild,对产生的C/C+源代码文件连同那些本来就是C/C+的源代码文件一起再进行编译,并链接生成最终的可执行外部EXE文件。如果要在MATLAB的当前目录中,生成一个与M文件同名的EXE文件,只需要简单地在MATLAB命令窗口输入以下命令:mcc-mfilename.m%创建C独立应用程序或mcc-pfilename.m%创
92、建C+独立应用程序1.8 MATLAB编译器1.8.2 1.8.2 创建创建EXEEXE文件文件170如果在创建C或C+语言的独立应用程序时,需要用到图形函数库,则需要利用以下相应的命令:mcc-Bsglfilename.m%创建带绘图函数的C独立应用程序或mcc-Bsglcppfilename.m%创建带绘图函数的C+独立应用程序与创建MEX文件类似,在创建EXE文件时,当M文件为文本文件filename.m时,同样首先要在文本文件的开头加一行“functionfilename”,然后再利用以上命令进行转换。1.8 MATLAB编译器1.8.2 1.8.2 创建创建EXEEXE文件文件171