加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 控制系统CAD与仿真MATLAB语言及应用,MATLAB程序设计教程

控制系统CAD与仿真MATLAB语言及应用,MATLAB程序设计教程.pdf

控制系统CAD与仿真MATLAB语言及应用,MATLAB程序设…

5542yu9459
2009-07-15 0人阅读 举报 0 0 暂无简介

简介:本文档为《控制系统CAD与仿真MATLAB语言及应用,MATLAB程序设计教程pdf》,可适用于教育、出版领域

第一章序论.控制系统的CAD与仿真概述随着科学技术的发展控制理论和控制系统的研究显得越来越重要。在世纪年代控制理论作为一门独立的学科出现以来已经取得了迅速发展。早期的控制系统的设计可以由纸笔和计算器等工具轻易的人工计算出来如Ziegler和Nichols在年提出的PID经验公式就可以十分容易地设计出来。随着控制理论的迅速发展对控制的性能要求越来越高控制的算法也越来越复杂控制器的设计越来越困难这样仅仅靠人工计算是很难达到预期的效果的。尤其是在现代控制理论的一些学科中如系统辨识、最优控制、模糊控制、智能控制、鲁棒控制等领域设计控制器需要大量的矩阵、向量方面的运算当系统阶次较高时根本无法手工计算。近年来随着计算机技术得到了飞速的发展在控制系统领域出现了一门新学科控制系统的计算机辅助设计(CSCADControlSystemComputerAidedDesign)简称控制系统CAD。控制系统CAD技术是对复杂控制系统进行分析和设计的重要方法和手段。在进行控制系统的分析与综合的过程中除了要进行理论分析外还要对系统的特性进行实验研究研究系统的固有的动态特性验算设计的控制器能否达到预期的性能指标这个过程是设计-实验-修改设计-再实验的过程。对于那些在实际运行过程中风险很大或者实验费用昂贵的系统一般不允许对设计好的系统进行直接实验或者反复实验而没有经过实验验证的系统是无法投入使用的这样只有借助于计算机才能对系统进行仿真实验研究。所谓控制系统的计算机仿真就是以控制系统的数学模型为基础借助计算机对控制系统的动态特性进行实验研究。控制系统的仿真的基本过程包括:建立系统的数学模型包括系统的不可变部分的数学模型和控制器的数学模型并得到整个闭环系统的数学模型建立仿真模型一般是对系统的数学模型做离散化处理得到相应的仿真模型编制仿真程序并运行分析仿真结果并得出相应的结论。控制系统CAD就是根据给定的系统性能指标要求借助计算机对系统的控制器进行设计。显然控制系统的计算机仿真是控制系统的计算机辅助设计的一个部分。这一过程包括:建立数学模型根据性能指标和控制算法编程求解控制器参数对系统校正前后进行仿真并验证控制器的实际控制效果修改控制器参数或结构直到仿真结果满足设计要求。由此可见控制系统CAD和仿真主要依赖于强大的软件技术和控制理论可以说软件的功能越强大进行辅助设计就越容易。控制系统CAD要求是编程简洁、数值计算能力强、有针对不同控制领域的工具箱、有专门的仿真工具、有数据可视化工具Matlab软件就是这样一种软件它是当前控制领域工程师们普遍使用的CSCAD软件。控制系统的计算机辅助设计的发展已经经历了多年的历程在这期间出现了许多CACAD软件包如Maple、MathCAD、Mathematica它们都提供了强大的数值计算功能可以用于控制系统的计算机仿真和设计现在流行最广泛的是美国MathWorks公司推出的Matlab软件本书以Matlab软件作为控制系统分析、设计和仿真的工具。.MATLAB简介年美国CleveMoler博士研制的MATLAB语言从它一诞生就引起了控制界学者的注目它的简洁和高效对后来控制理论以及计算机辅助设计起到了巨大的推动作用。MATLAB是以复数矩阵作为基本编程单元的一种程序设计语言它提供了各种矩阵的运算操作并具有较强的绘图功能。随着新版本的不断推出Matlab无论在界面还是在内容上都不断完善并拥有很多应用在控制领域的工具箱Matlab已经成为当今国际控制界应用最广也是最受人们喜爱的一种软件环境。Matlab的语言特点Matlab被称为第四代计算机语言利用其丰富的函数资源可使编程人员从繁琐的代码中解脱出来。Matlab用更直观、符合人们思维习惯的代码代替了C和Fortran语言的冗长代码给用户带来的是最直观、最简介的程序开发环境。一下简要介绍Matlab的主要有点:①语言简洁紧凑使用方便灵活。Matlab程序的书写格式自由数据的输入、输出语句简洁很短的代码就可以完成其它语言要经过大量代码才能完成的很复杂工作。例如:A=一条语句实现了对x矩阵的输入。②数值算法稳定可靠库函数十分丰富。Matlab的一个最大特点是强大的数值计算能力它提供了许多调用十分方便的数学计算的函数使我们随意使用而不必考虑数值得稳定性。例如:e=eig(A)求矩阵A的特征值L,U=lu(A)求矩阵A的LU分解polyder(b)求多项式的微分③运算符丰富。Matlab是用C语言编写的所以Matlab提供了和C语言几乎一样多的丰富的运算符而且还重载了一些运算符给它们赋予了新的含义。例如:C=A*B矩阵的乘法B=C’求矩阵C的共轭复转置x=Ab求Ax=b的最小二乘解④Matlab既具有结构化的控制语句(if、for、while)又支持面向对象的程序设计。⑤语法限制不严格程序设计自由度大。例如:在Matlab里可以不用先定义或声明变量就可以使用它们。⑥程序的可移植性好。Matlab程序几乎不用修改就可以移植到其它的机型和操作系统中运行。⑦Matlab的图形功能强大支持数据的可视化操作方便的显示程序的运行结果。⑧强大的工具箱。Matlab包含两个部分:核心部分和各种可选的工具箱。核心部分有几百个核心内部函数工具箱则是有各个领域的高水平专家编写的所以用户不必编写该领域的基础程序就可以直接进行更高层次的研究。例如:控制领域可以使用的工具箱就有ControlSystem(控制工具箱)、SystemIdentification(系统辨识工具箱)、RobustControl(鲁棒控制工具箱)、Optimization(最优化工具箱)等。⑨源程序的开发性系统的可扩充能力强。除了内部函数外所有的Matlab核心文件和工具箱文件都提供了Matlab源文件用户可通过对源文件的修改生成自己所需要的工具箱。⑩Matlab是解释执行语言。Matlab程序不用编译生成可执行文件就可以运行解释执行时程序的执行速度较慢效率比C等高级语言要低而且无法脱离Matlab环境运行Matlab程序这是Matlab的缺点。但是Matlab的编程效率远远高于一般的高级语言这使我们可以把大量的时间花费在对控制系统的算法研究上而不是浪费在大量的代码上。Matlab集成环境的组成Matlab是一个软件平台不仅仅是一门语言下面简单介绍它的组成。、Matlab语言、Matlab工作环境包括程序编辑器、变量查看器、系统仿真器。、Matlab图形系统用Matlab的句柄图形可以实现二维、三维数据的可视化、图象处理也可以完全或局部修改图形窗口还可以方便的设计图形界面。、Matlab数学函数库、MatlabAPI这是Matlab的应用程序接口它提供了Matlab和C语言、Fortran语言直间的接口程序库使用户可以在C、Fortran程序里调用Matlab程序。Matlab软件的基本使用方法zMatlab软件的安装Matlab目前最新版本是建议安装这个版本的软件。只要将Matlab光盘放入光驱运行光盘上的Setupexe程序即可自动安装。安装过程中要求用户输入正确的序列号码、选择安装的路径、选择安装的工具箱、选择安装的帮助类型。Matlab附带了大量的工具箱有些工具箱是控制领域所不需要的为了节省磁盘空间建议有选择的安装这些工具箱。zMatlab软件的启动安装成功后可以通过WindowX系统的桌面快捷键或者开始菜单启动Matlab。启动Matlab后出现如图-所示的主窗口。主窗口上有三个窗口:命令窗口(CommandWindow)、工作空间(Workspace)操作台(LanuchPad)窗口、历史命令(HistoryCommand)窗口。在命令窗口可以键入Matlab命令和函数按回车键后就直接执行键入的命令和函数同时历史命令窗口记录了曾经执行过的命令并可以重新执行或者转存为M文件。在工作空间窗口可以观测当前工作空间中的变量情况从操作台窗口可以寻求相关的帮助信息。图-MATLAB的主窗口z命令窗口Matlab的命令窗口的系统提示符是两个大于号即>>,在提示符后可以输入要执行的命令。Matlab的命令窗口可以执行任何Matlab命令和函数这个窗口的主要功能有:操作M文件(打开、新建、运行、保存)、操作MDL文件、运行Matlab程序、运行外壳应用程序。所谓外壳应用程序是指其它非Matlab的可执行文件。例如:要检测磁盘可以执行操作系统的scandiskexe外部命令在命令窗口键入如下语句即可:>>!scandisk其中:>>是提示符!是执行外壳程序必须的运算符scandisk是外壳程序名。z程序编辑调试器Matlab内置了程序的编辑调试器(如图所示)在编辑调试器里可以建立、编辑、存储M文件可以运行、调试(断点、单步、跟踪、查看)程序其使用方法和TurboC的集成环境类似。图程序编辑调试器窗口z变量查看器在MATLAB中工作空间(Workspace)是一个重要的感念。工作空间指运行MATLAB的程序或命令所生成的所有变量和MATLAB提供的常量构成的空间是一个比较抽象的概念。启动MATLAB后会自动建立一个工作空间工作空间在MATLAB运行期间一直存在关闭MATLAB后工作空间自动消失。刚打开的MATLAB的工作空间中只有MATLAB提供的几个常量如pi()、虚数单位ij等。运行MATLAB程序时程序中的变量被加入到工作空间中。除非用特殊的命令删除某变量否则该变量在关闭MATLAB之前一直存在。由此可见在一个程序中的运算结果以变量的形式保存在工作空间中又可被别的程序继续利用。我们可以随时查看工作空间中的变量名及变量的值。另外某个时刻的工作空间中的所有变量可以保存到一个文件中这样当关闭MATLAB后所有的变量的值仍然存在当下次启动MATLAB后又可用相关的命令把保存的工作空间的所有变量调入到当前工作空间。关于工作空间变量管理的命令如下。whowhos查看工作空间中的变量情况clear查看工作空间中的变量sizelength求取变量的大小exist查询在当前的工作空间中是否存在一个变量saveload将工作空间中的变量保存到文件中或从文件中加载变量以上命令的详细说明请查阅Matlab的帮助系统。z图形窗口图形窗口(如图-所示)是独立于Matlab主窗口的窗体由Matlab和系统共同控制。在图形窗口上可以进行绘制曲线、显示文本、填充颜色等操作。可以用figure命令建立新的图形窗口也可以用绘图语句自动创建图形窗口并在上面绘图如plot命令。图图形窗口z帮助系统Matlab有大量的函数和工具箱而且这些函数、工具箱随着软件版本的升级还要不断扩充。对用户来说掌握每一个函数是不可能的事情因此经常要借助于Matlab自身的帮助系统寻求函数、工具箱的使用方法熟悉Matlab的帮助系统是掌握Matlab的重要方法。Matlab中有两种寻求帮助的方法:、使用普通文本帮助在命令窗口中键入如下命令就可以在命令窗口显示相关内容的帮助:help函数名文件名显示相关函数文件的帮助体lookfor函数名文件名显示相关函数文件的H行、使用超文本帮助可以使用两种方法激活Matlab的超文本帮助:在命令窗口键入doc命令或者用命令窗口的帮助菜单选项。超文本的帮助窗口如图-所示。在超文本帮助窗口中可以象浏览网页一样查找所需要的帮助内容。也可以在命令窗口中键入下面的命令查找需要的超文本帮助:doc函数名文件名图帮助窗口Matlab编程基础为了方便初学者在学习Matlab初期时上机调试下面列举了常用的编程知识、规则:、用户可以在MATLAB命令窗口键入一个命令也可以由Matlab定义的语言编写一个或多个应用程序这样MATLAB软件对此命令或程序中的各条命令进行翻译然后在MATLAB环境下对它进行处理最后返回运算结果。要注意的是无论是命令还是Matlab应用程序必须在Matlab环境中运行通常在命令窗口键入命令命或者应用程序名。、MATLAB以复数矩阵为基本的运算单元既可以对它整体进行处理也可以对它的某个或某些元素进行单独处理操作起来比较方便。、MATLAB最基本的语句是赋值语句其结构为:变量名列表=表达式其中等号左边的变量名列表为MATLAB语句的返回值若一次返回多个结果则变量列表用括起来各变量间用逗号分隔等号右边为表达式可以是矩阵运算或函数调用可以由分号()、逗号(,)或回车结束。如果用分号结束则左边的变量结果将在屏幕上不显示否则将显示左侧变量的值。、变量不需要定义就可以直接使用和赋值。例如:A=,,定义并输入一个x的矩阵str=’Hello’定义并输入一个字符串(字符数组)矩阵的每行中的各个元素用逗号或者空格分隔行于行之间用分号分隔字符串用单引号定义。、输入、输出函数。①A=input(提示信息选项)说明:这里的提示信息可以作为一个字符串来显示它用来提示用户输入什么样的数据例如用户想输入A矩阵则可以采用下面的命令:A=input(‘EntermatrixA=>’)执行该语句时先给出EntermatrixA=>提示然后等待用户从键盘上按照MATLAB格式输入一个矩阵。若在调用此函数时选择了‘s’选项则允许用户输入一个字符串。②disp(A)说明:其中A既可以为字符串也可以为矩阵。如果A为一个字符串可按如下语句显示其内容:A=‘hello’disp(A)显示结果为:hello如果A为矩阵则可以按照下面的形式来显示一个矩阵A=,,,,,,disp(A)显示结果为:注意用disp()函数显示矩阵时将不显示矩阵的名字而且格式更紧密且不留任何没有意义的空行。第二章MATLAB语言编程本书的主要内容是关于控制系统的分析、设计和仿真用到的工具软件是Matlab因此熟悉和理解Matlab语言至关重要。本章把Matlab作为一种编程语言介绍给读者主要介绍MATLAB的基础知识包括数据类型、运算符、基本语句、矩阵、多项式等同时还简要介绍了数据的可视化实现为以后应用Matlab编写控制系统设计、仿真程序打下良好的基础。数据类型和运算符变量、语句、变量z变量命名规则为变量(包括函数)命名时应该遵循以下的规则:⑴必须以字母开头⑵可以由字母、数字和下划线混合组成⑶变量长度应不大于个⑷字母区分大小写。z变量的定义Matlab对于变量的定义和声明要求非常宽松使用变量前不用专门的语句定义变量的数据类型根据语句的执行结果自动指定变量的数据类型和变量的尺寸。z特殊变量为了计算和使用方便Matlab中定义了一些具有特殊意义的变量(见表)这些特殊变量在工作空间和函数空间都可以使用。表特殊变量定义表变量名称功能变量名称功能ans保存最后一次的运算结果pi圆周率realmax最大的浮点数值realmin最小的浮点数值I虚数单位j虚数单位Inf正无穷大NaN非数(InfInf)z局部变量和全局变量通常每个函数体内都有自己定义的变量不能从其它函数和MATLAB工作空间访问这些变量这些变量就是局部变量。如果要使某个变量在几个函数中和MATLAB工作空间都能使用可以把它定义为全局变量。全局变量用关键字“global”声明如果需要在几个函数中和MATLAB工作空间都能访问一个全局变量则必须在每个函数中和MATLAB工作空间都声明该变量为全局的。全局变量需要在函数体的变量赋值语句之前说明整个函数以及对函数所有的递归调用都可以利用全局变量。、基本语句MATLAB是一种解释性语言它不仅可以在MATLAB命令窗口中键入命令而且可以在编辑器内编写应用程序统一在MATLAB环境下运行处理并返回运算结果。MATLAB语言的基本语句结构为:变量名列表=表达式其中等号左边的变量名列表为MATLAB语句的返回值若一次返回多个结果则变量列表用括起来各变量间用逗号分隔等号右边为表达式可以是矩阵运算或函数调用可以由分号()、逗号(,)或回车结束。如果用分号结束则左边的变量结果将在屏幕上不显示否则将显示左侧变量的值。数据类型在MATLAB里共有六种数据类型每一种类型可以是一维、二维和多维的。这六种是:双精度型(double)、字符型(char)、稀疏型(sparse)、存储型(storage)、细胞型(cell)和结构型(struct)。MATLAB计算都采用双精度MATLAB提供的绝大部分函数都是对双精度矩阵和字符串操作的其他几种数据类型用于特殊的场合。比如存储型可用于图像处理稀疏型用于稀疏矩阵细胞型和结构型一般用于编写大型软件。表列出了这些数据类型的一些例子。表数据类型举例数据类型(class)举例解释double,,,i双精度数值类型是最常用的类型。Char‘Hello’字符数组每个字符占位。sparsespeye()双精度稀疏矩阵只存储矩阵中的非元素Cell{,,,,,,,‘hello’,eye()}细胞数组数组中的每个元素可为不同类型、不同维数。structaday=acolor=’red’amat=magic()结构数组相当于数据库的记录把相关的数据列在一起称为属性不同属性的数据类型可以不同storageunit(magic())位型为无符号整数最大可表示,不能进行数学运算。和其他软件不同在MATLAB里不能用double、char来定义变量。变量的数据类型可以用函数isa来查看其调用格式为:isa(变量名数据类型)比如:isa(s‘sparse’)当矩阵s为稀疏矩阵时将返回。下面我们重点介绍字符型、结构型、细胞型数据的使用规则和方法。、字符MATLAB有强大的字符处理能力其字符处理函数见附录A中的附表A。MATLAB中的字符串有几条基本规则:⑴所有字符串都用单引号括起来⑵字符串中的每一个字符都是该字符串变量中的一个元素⑶字符串中的字符以ASCⅡ码形式存储因而区分大小写。MATLAB中对字符串的常用操作方法主要有:⑴建立:可以直接赋值或者由其他数值转换得到常用函数有char、intstr、numstr、sprintf等。⑵连接:水平连接通过函数strcat或在中括号内用逗号连接垂直连接通过函数strvcat或在中括号内用分号连接。⑶比较:常用函数strcmp、strcmpi、strncmp,相同则返回否则为。⑷查找:常用函数findstr。、结构MATLAB中结构的概念与C语言中类似也包含一个或多个域每个域可以包含任何类型的数据而且互相独立。结构的建立和访问有其特有的方法:①直接建立结构和各个域同时给各域赋值结构和域之间用点“.”连接。同样访问结构的各个域时其格式为:结构名.域名结构的各个域可以按照其本身的数据类型进行相应的各种运算。例:studentname=’Jack’studentage=studentphone=’’②用函数struct建立结构其用法为:s=struct(‘field’,values,‘field’,values,┅)该函数用指定的域名和各个域的数据建立结构数组如果数组中包含多个结构而且各个结构域中的数据不尽相同那么域的数据values、values┅必须是细胞数组。例:建立一个结构体数组数组里现在有个元素s=struct('type',{'big',’little’},'color','red','x',{})s()types()xs()color建立一个结构体数组其中域data是细胞数组adata={‘Hello’,,,,}amemo=’thisisatest’adata{}adata{}()amemo()、细胞细胞数组是MATLAB特有的一种数据类型。细胞数组的各个元素可以是不同的数据类型。细胞数组的访问采用下标访问用{}括起来的下标为细胞数组中的第几个元素用()括起来的下标为大括号对应的某个元素的分量。可以用两种方法定义细胞数组:()用赋值语句直接生成例:a(,)={}a(,)={‘Mycat’}a(,)={j}a(,)={::}也可以这样赋值:A{,}=A{,}=’Mycat’A{,}=jA{,}=::()先用cell函数预分配数组然后对每个元素赋值。例:B=cell(,)将B定义为x的细胞数组B(,)={::}运算符MATLAB的运算符可分为三类:算术运算符、关系运算符和逻辑运算符。其中算术运算符的优先级最高其次是关系运算符再其次是逻辑运算符。下面将分别介绍这三类运算符和逻辑函数。算术运算符按照运算符的优先级可把算术运算符分为五级在每一级里运算符有同样的优先级在运算时自左向右结合常见的算术运算符见附录A中的附表A。①'^'^②(标量加、减)③**④(矩阵加、减)⑤:(循环)算术运算符中带有""表示只对操作数的每个元素作相同的运算例如C=A*B表示C中的每个元素等于A和B中相同位置元素的乘积而C=A*B代表矩阵的乘积运算。关系运算符关系运算符对于程序的流程控制非常有用在MATLAB的循环和条件控制中经常使用。在MATLAB里共有六个关系运算符这些运算符和C语言的运算符含义基本相同。<小于>大于<=小于等于>=大于等于==等于~=不等于除了长方形矩阵和向量外所有的关系运算符连接的两个运算数须是同维、每维同大小的。对于长方形矩阵和向量两个运算符或者同维、同大小或者其中一个为标量。当有一个运算数是标量时关系运算符是把标量和另一个运算数的每个元素进行比较。关系运算符将生成一个矩阵当运算数相应元素为真时对应位置上生成否则为。例:a=,,a>=运算结果:ans=逻辑运算符MATLAB里共三种逻辑运算符:(与)|(或)~(非)和关系运算符一样除了逻辑运算符的一个运算数为长方阵或向量时另一个运算数可以为标量。其余情况下均要求矩阵同维。逻辑运算符也对运算数的相应元素一一运算最后结果是一个矩阵。当逻辑表达式的值为真时赋值否则为。对于数值矩阵当元素为时逻辑上为假当元素为非时逻辑上为真。逻辑函数MATLAB提供了一些逻辑函数。主要包括xor(异或)、all、any、isnan、isinf、isfinite、find等等。()all函数:当向量的元素都为真时函数all将返回变量否则返回变量。对于矩阵函数all对列操作。当某列的元素都为真时返回值为。函数all对于矩阵的最终运算结果为一个行向量。()any函数:当向量中至少有一个元素为真时函数any将返回变量只有当向量中的所有元素都为假时才返回变量。和函数all一样当运算数为矩阵时函数any将逐列运算最后返回一个结果为的行向量。()函数isnan、isinf和isfinite:返回和运算数同维的数组。当运算数为NaN(非数)时函数isnan在返回数组的位置为否则返回。当运算数的元素为inf(无穷大)时函数isinf在返回数组的相应位置为。否则为。当运算数的元素不为inf和NaN时函数isfinite在相应的位置返回否则返回。下面的程序段给出了计算实例。例:A=NaNinfB=infC=ABWarning:DividebyzeroC=NaNInfNaNNaNisfinite(C)ans=isnan(C)ans=isinf(C)ans=()find函数:用于查找向量中的真元素的下标返回由所有真元素下标构成的列向量。对于数值向量真元素即为非元素。下面的程序段给出了它的用法。例:A=magic()%生成三阶魔方矩阵。A=i=find(A>)查找A>生成的矩阵中的非元素并将非元素在矩阵中的一维下标生成列向量ii=A(i)=%将魔方矩阵中下标为i的元素赋值为。A=程序控制语句和其它高级语言一样MATLAB也提供了循环语句、条件转移语句等一些常用的控制语句而且与C语言的控制语句格式很相似。、循环语句MATLAB中的循环语句包括for循环和while循环两种类型。zfor循环for循环的基本格式为:for循环变量=起始值:步长:终止值循环体end步长的缺省值是。步长可以在正实数或负实数范围内任意指定对于正数循环变量的值大于终止值时循环结束对于负数循环变量的值小于终止值时循环结束zwhile循环while循环的基本格式为:while表达式循环体end其执行方式为:若表达式为真则执行循环体的内容执行后再判断表达式是否为真若为假则跳出循环体向下继续执行否则继续执行循环体。zbreak:从循环体中跳出并使循环结束。、条件转移语句条件转移语句有if语句和switch语句两种zif-else-elseif语句iif格式:if逻辑表达式执行语句end当逻辑表达式的值为真则执行该结构中的执行语句内容执行完后向下继续执行若逻辑表达式的值为假跳过结构中的执行语句继续向下执行。iiifelse格式if逻辑表达式执行语句else执行语句end如果逻辑表达式的值为真则执行语句然后跳过语句向下执行若逻辑表达式的值为假则跳过执行语句而执行语句然后向下执行。iiiifelseif格式if逻辑表达式执行语句elseif逻辑表达式执行语句……else逻辑表达式n执行语句nelse执行语句elend如果逻辑表达式的值为真则执行语句若逻辑表达式的值为假则判断逻辑表达式的值若为真则执行语句否则向下执行。zswitch语句switch语句的格式为:switch表达式(标量或字符串)case值语句case值语句┅case值n语句notherwise语句owend其执行方式为:表达式的值和哪种情况(case)的值相同就执行哪种情况中的语句如果都不同则执行otherwise中的语句。矩阵运算输入简单的矩阵在MATLAB语言中不必描述矩阵的维数和类型它们是由输入的格式和内容来决定的。输入小矩阵最简单的方法是使用直接排列的形式把矩阵的元素直接排列到方括号中。每行内的元素间用空格(space)或逗号()分开行与行的内容间用分号()隔开。例如:A=或A=,,,,,,都将得到输出结果:A=大的矩阵可以分行输入用回车键代替分号。这样的输入形式更接近于我们平时使用矩阵的数学格式。如:A=矩阵的输入也可以通过建立M文件来完成还可以通过函数的输出变量赋值建立。向量和标量也可以看成是一种特殊的矩阵。矩阵元素与下标引用矩阵下标在MATLAB中矩阵元素的引用可以通过下标表示通常有如下规则:z用两个下标来表示。在矩阵A中第i行j列的元素用A(i,j)来表示。z用一个下标来表示。对于矩阵由于MATLAB的基本运算都是对列操作的矩阵认为是按列优先排列的一个长的列向量从而可用单下标引用。例如:对于×的矩阵A其中A()表示第一列的第一个元素A()表示第一列的第二个元素A()表示第二列的第一个元素A()表示第二列的第二个元素。z在下标的表达式里使用冒号表示矩阵的一部分。例如:A(:k,j)表示矩阵A的第j列的前k个元素。A(:,j)表示矩阵A的第j列的所有元素。由于有了冒号运算符在MATLAB里编程变得特别简洁例如求矩阵A的第j列元素之和其表达式为sum(A(:,j))。z下标引用从序号开始。矩阵的组合在MATLAB里矩阵的组合表示把小矩阵组合成大矩阵。矩阵的组合符号为中括号。例:A=,,,B=A,AA=B=.矩阵的抽取用下标可以从大矩阵里面抽取某些元素组成小的矩阵并使用()运算符。例:A=,,,,,,C=A,,,D=C(:,:)C=D=删除矩阵的行和列我们把空的称为空矩阵即矩阵大小为×。可以通过把矩阵的行或列赋值为空矩阵来删除某行或某列。例:X=将一个×的矩阵赋给XA(:,)=则将A的第二列和第四列删除了A(:,)=删除矩阵A的第二列在MATLAB里不能用双下标来删除矩阵的某个元素例如X(,)=将给出错误信息。但可以用单下标来删除矩阵的某个或某些元素MATLAB删除这些元素后将剩下的元素按列编成一个长的行向量。例:A=A(::)=%删除下标为,,的三个元素运行结果:A=矩阵运算.矩阵的加减矩阵地加减运算使用+、-运算符能够相加减的矩阵满足以下两个条件之一:()类型相同即行数相等且列数相等。()其中一个为标量此时的加减运算结果等于矩阵中每一个元素都和标量做加减运算。例:x=y=x运算结果:y=.矩阵的乘积矩阵的乘积运算使用*运算符而且相乘的矩阵必须满足维数条件。例:v=u=x=v*u可求出内积。x=X=u*v可求出外积。X=.矩阵的除法MATLAB定义的除法运算其意义相当于矩阵的求逆运算。更一般地MATLAB还定义了矩阵的左除及右除。·矩阵的左除:MATLAB用“”运算符号表示两个矩阵的左除AB即由Gauss消去法来获得线性方程AX=B的解X即X=AB。如果矩阵不是方阵也可以求出AB这时将使用最小二乘法来求取AX=B中的X矩阵。·矩阵的右除:MATLAB用“”表示两个矩阵的右除。X=BA是X*A=B的解对于非奇异方阵ABA等效为BA。.矩阵的转置在MATLAB里单引号表示复共轭转置一个点加单引号"′"表示普通转置。例:z=ii,z′,z′运算结果:z=iiz′=iiz′=ii.矩阵的点运算MATLAB中定义了一种特殊的运算即点运算。两个矩阵之间的点运算是对该矩阵对应元素的直接运算。例如C=A*B表示A和B矩阵的相应元素之间直接进行乘法运算然后将结果赋给C矩阵。注意点乘积运算要求A和B矩阵的维数相同。这种点乘积又称为Hadamard乘积。常用的点运算包括:*’^。例:对两个简单矩阵A和B=A=B普通乘法运算与点乘运算结果分别为:=AB=*BA矩阵函数、三角分解矩阵最基本的分解是将一个方阵表示成两个基本三角阵的乘积其中一个三角阵为上三角阵另一个为下三角阵。这种分解被称为"LU分解"。利用这种分解可以求矩阵的逆行列式的值它也是解线性方程的基础或者是方阵除法的基础。Matlab提供如下函数:L,U=lu(A)求矩阵A的LU分解X=inv(A)求矩阵A的逆矩阵d=det(A)求矩阵A的行列式、特征值分解对于求解A矩阵的特征值和特征向量其调用格式为:d=eig(A)VD=eig(A)VD=eig(A'nobalance')其中A为方阵且它的线性独立的特征向量个数等于矩阵A的阶数d为矩阵A的特征值向量D为A阵的特征值对角阵V为A阵的全部右特征向量且满足A*V=V*D的特征向量矩阵当A矩阵中有的元素小到和截断误差相当时用nobanlance选项。当A矩阵来自程序的中间计算结果时一般用nobalance选项来减少计算误差。、矩阵的尺寸为了判断矩阵的尺寸Matlab提供了以下函数:m,n=size(A)返回矩阵的行数m和列数nM=size(A)在矩阵M中返回矩阵的行数、列数len=length(A)返回矩阵A行数和列数中的最大值、特殊矩阵的生成在实际应用中经常要用到一些特殊矩阵Matlab为我们提供了这些函数:z单位矩阵eys(n)生成n维单位阵eye(m,n)生成m×n的单位阵eys(m,n)生成m×n的单位阵eye(size(A))生成与A矩阵同样大小的单位矩阵z全矩阵ones(n)ones(m,n)ones(m,n)ones(size(A))z全零矩阵zeros(n)zeros(m,n)zeros(m,n)zeros(size(A))z随机矩阵rand(n)rand(m,n)rand(m,n)rand(size(A))生成的随机矩阵的各个元素值在和之间。z魔术矩阵magic(n)魔术矩阵的所有行元素和、列元素和、对角线元素和均相等。多项式在MATLAB里多项式用行向量表示。多项式P(x)=anxnanxn…axa。其系数向量表示为:P=anan…aa。多项式的创建z直接输入法例如:P=,,,zpoly(A)创建方阵A的特征多项式zpoly(a)如果A为向量bnbn…bb则创建(xb)(xb)…(xbn)(xbn)生成的多项式的系数向量。多项式的常用函数多项式的函数包括:roots:求多项式的根。poly:求矩阵的特征多项式。polyval:求多项式的自变量为某个特定值(标量)时的多项式的值。polyvalm:和polyval作用相同输入参数值也可为方阵。当多项式的变量为矩阵时其意义和标量差不多。例如多项式P(s)=xx则P(A)=AAII为和A同阶的单位阵。例:p=–r=roots(p)r=iiA=poly(A)%求矩阵A的特征多项式ans=polyval(ans,)求特征多项式中自变量为时的值ans=eY=polyvalm(p,A)把矩阵作为自变量代入到多项式中Y=卷积和解卷积卷积和解卷积是信号处理中常用的数学工具。向量的卷积和解卷积对应于多项式的乘法和除法其常用函数包括:conv:卷积函数多项式乘法函数deconv:解卷积函数多项式除法函数polyder:用于计算两个多项式的积、单个多项式和两个多项式的商的导数其调用格式为:zPd=polyder(P)求多项式P的导数zPm=polyder(P,P)求多项式P和多项式P的乘积的导数zQ,D=polyder(P,P)求多项式P除以多项式P商的导数例:a=b=c=conv(a,b)%求多项式a(s)和b(s)的乘积c=q,r=deconv(c,a)q%利用多项式除法求出多项式b(s)q=q=polyder(c)q=求多项式c(s)的导数多项式曲线的拟合从最小二乘的意义上polyfit函数将拟合出所给数据的多项式系数其调用格式为:p=polyfit(x,y,n)其中x和y为已知数据的横坐标和纵坐标向量n为多项式的次数。例:已知五个数据点:,,,,,,,,,试画出这五个点拟合的三次曲线。解:运行下面的程序并得到相应的拟合的曲线如图-所示。x=,,,,y=,,,,p=polyfit(x,y,)p=x=::y=polyval(p,x)plot(x,y,'o',x,y),gridon图-多项式曲线拟合函数与M文件和其它高级语言一样函数是MATLAB语言中最重要的组成部分MATLAB提供的各种工具箱中的M文件几乎都是以函数的形式给出的。用Matlab语言编写的可以在Matlab环境中运行的程序称为M文件。M文件用扩展名m结尾可在命令行中执行也可被其它程序调用我们可以使用任何文本编辑器编辑M文件。M文件分为两种:命令文件和函数文件它们有各自的特点。命令文件命令文件没有输入参数也没有输出参数只是一些Matlab命令和函数的组合。命令文件可以操作工作空间的变量也可以生成新的变量但是当命令文件执行结束后新变量将保存在工作空间中不会被自动清除。例:编写命令文件testcomm用于求解小于且为的整数次幂的正整数。解:testcommF()=k=whileF(k)<F(k)=*F(k)k=kendF,k为了能够在命令窗口执行testcom命令可以建立一个MySample子目录然后用命令窗口的【File】|【SetPath】菜单将该目录加入的Matlab的搜索目录中。这样就可以直接在Matlab命令窗口键入testcom执行这个命令其运行结果为:F=ColumnsthroughColumnsthroughk=函数文件函数接收输入参数返回输出参数。函数文件与程序文件类似也是以“m”为扩展名的文本文件而程序文件与函数文件的主要区别在于函数允许通过数值进行参数传递而且函数使用局部变量而不是全局变量操作。另外函数文件的第一行必须包括“function”这个关键字。函数文件的文件名必须和函数定义的函数名称相同。MATLAB的函数M文件通常由以下几个部分组成:z函数定义行函数M文件的第一

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/30

控制系统CAD与仿真MATLAB语言及应用,MATLAB程序设计教程

仅供在线阅读

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利