电力系统的MATLABSIMULINK仿真与应用第2章.ppt
第2章MATLAB编程基础,,2.1MATLAB的工作环境2.2MATLAB语言的基本元素2.3矩阵的MATLAB运算2.4MATLAB的程序流程控制2.5M文件的编写2.6MATLAB的图形绘制2.7MATLAB编程仿真与应用习题,2.1MATLAB的工作环境2.1.1MATLAB程序主界面安装完MATLAB7.0软件并重新启动计算机后,在Windows桌面上将出现MATLAB的软件图标。鼠标双击该图标,就可进入MATLAB的工作环境,显示默认的程序主界面,如图2-1所示。默认的程序主界面主要包括下列区域①菜单;②工具栏;③命令窗口;④当前路径浏览器;⑤工作空间浏览器;⑥命令历史浏览器。这些命令子窗口使得MATLAB本身的操作更容易、方便。,,,图2-1MATLAB7.0的程序主界面,,1.菜单菜单功能与其它通用软件开发环境基本一致,可进行文件、编辑、调试、窗口和帮助等各主体功能菜单操作。这里仅介绍与MATLAB学习密切相关的文件类型的相关内容。1[FileNewM-File]进入文本编辑窗界面,建立一个文本文件,实现MATLAB命令文件的输入、编辑、调试、保存等处理功能,保存时文件后缀名为.m。2[FileNewFigure]进入图形窗界面,建立一个图形文件,实现MATLAB图形文件的显示、编辑、保存等处理功能,保存时文件名后缀为.fig。,,3[FileNewModel]建立一个SIMULINK模型文件,实现SIMULINK仿真模型的建模、仿真、调试、保存等处理功能,保存时文件名后缀为.mdl。这三种文件是MATLAB/SIMULINK最重要的文件类型,在后面章节中将详细论述。2.工具栏这里仅介绍SIMULINK中特有的工具图标,其它图标与大部分常用软件开发环境下的图标基本一致。,,,3.命令窗口命令窗口位于图2-1所示MATLAB程序主界面的最右边,是用户与MATLAB人机交互的主要环境。在提示符“”后键入MATLAB命令并回车确认,该命令窗口中将立即显示执行结果。表2-1所示为命令窗口中的常用指令,对用户的操作非常有用。,,,,表2-1命令窗口中的常用指令,,,图2-2命令窗口中输入指令并返回结果,在命令窗口中,很容易判断某条语句是命令还是结果。命令行均以提示符“”开头,计算结果不带提示符。4.当前路径浏览器点击图2-1所示MATLAB软件主界面左上窗口中的“CurrentDirectory”属性页,激活当前路径浏览器,如图2-3所示。当前工作路径中所有文件夹及所有类型的文件名均显示于此窗口中。用户可在此窗口中进行类似于一般文件夹中的管理工作,如新建或删除文件夹、删除或重命名文件、打开目标文件等。,,,图2-3当前路径浏览器窗口,5.工作空间浏览器当MATLAB启动后,系统自动在内存中开辟一块存储区用于存储用户在MATLAB命令窗口中定义的变量、运算结果和有关数据,此内存空间称为MATLAB的工作空间workspace。工作空间在MATLAB刚启动时为空,用户退出MATLAB后,工作空间的内容将不再保留。点击图2-1所示MATLAB程序主界面左上窗口中的“Workspace”属性页,激活工作空间浏览器,如图2-4所示。在此窗口中可以对工作空间进行管理。,,,图2-4工作空间浏览器窗口,如同例2.1,在输入实现勾股定理的命令语句并执行后,系统工作空间管理窗中显示的信息如图2-4所示。可见,在执行命令过程中,用户在MATLAB命令窗口中定义的变量和运算结果确实都已经存储在工作空间中。用户可方便地查看当前工作空间中存在的变量和值,而且还可进行新变量定义、变量删除、保存等管理。6.命令历史浏览器命令历史浏览器位于图2-1所示MATLAB程序主界面的左下角,属性页名称为CommandHistory。如图2-5中所示,此窗口按时间顺序完整地记录了曾经在MATLAB工作窗口中输入并执行过的命令语句。,,,图2-5命令历史浏览器窗口,通过命令历史浏览器,可实现的功能如下1方便地按顺序查看输入命令的记录。2双击单条命令行,可使其立即执行,而不用用户重新输入命令行。3按住“Ctrl”键并单击鼠标左键可选中多条命令行,再单击鼠标右键,在弹出菜单中选择“CreateM-File”选项,可将选中的多条命令行作为一个文件进行编辑和保存。,,2.1.2文本编辑窗口MATLAB编程有两种工作方式一种称为行命令方式,就是在工作窗口中一行一行地输入程序,计算机每次对一行命令做出反应,因此也称为交互式的指令行操作方式;另一种工作方式为M文件编程工作方式。编写和修改M文件就要用到文本编辑窗口。表2-2列出了这两种工作方式的简单比较。,,,,表2-2MATLAB编程两种工作方式比较,用户可以通过创建一个新的文本文件或打开一个原有的程序文件的方式来进入文本编辑窗口。该类程序文件名以.m为后缀。用户将文本编辑窗口中的程序保存后,在MATLAB命令窗口中输入该文件的文件名就能执行程序。MATLAB中还有一种图形管理窗口,执行绘图命令后,会自动产生该窗口,图形的编辑管理等工作都在这一个窗口中进行。关于图形管理窗口的知识将在2.6节中详细论述。,,2.2MATLAB语言的基本元素MATLAB语言提供了丰富的数据类型,如实数、复数、向量、矩阵、字符串、多维数组、结构体、类和对象等,还提供了丰富的内置功能函数。这些功能使得MATLAB的编程功能非常强大。本节介绍变量和矩阵这两种最基本且常用的数据类型以及赋值语句的基本形式。,,2.2.1变量变量是保存数据信息的一种最基本的数据类型。变量的命名应遵循如下规则1变量名必须以字母开头;2变量名可以由字母、数字和下划线混合组成;3变量名区分字母大小写;4MATLAB保留了一些具有特定意义的默认变量见表2-3,用户编程时可以直接使用,并尽量避免另外自定义。例如,Long和My_long1均是有效的变量名,Long和long表示的是不同的变量。用户编程时必须注意并遵守这些规则。,,,,表2-3MATLAB的系统保留变量,2.2.2赋值语句MATLAB采用命令行形式的表达式语言,每一个命令行就是一条语句,其格式与书写的数学表达式十分相近,非常容易掌握。用户在命令窗口输入语句并按下回车键后,该语句就由MATLAB系统解释运行,并给出运行结果。MATLAB的赋值语句有下面两种结构。,,1.直接赋值语句直接赋值语句的基本结构如下赋值变量赋值表达式其中,等号右边的表达式由变量名、常数、函数和运算符构成,直接赋值语句把右边表达式的值直接赋给了左边的赋值变量,并将返回值显示在MATLAB的命令窗口中。【例2.2】对a赋值,实现a2p。解在MATLAB命令窗口中输入图2-6所示语句并回车确认。,,,图2-6例2.2输入语句及返回结果,2.函数调用语句直接赋值语句的基本结构如下[返回变量列表]函数名输入变量列表其中,等号右边的函数名对应于一个存放在合适路径中的MATLAB文本文件。函数可以分为两大类一类是用户根据需要自定义的用户函数;另一类是MATLAB内核中已经存在的内置函数。返回变量列表和输入变量列表均可以由若干变量名组成。若返回变量个数大于1,则它们之间应该用逗号或空格分隔;若输入变量个数大于1,则它们之间只能用逗号分隔。,,【例2.3】通过调用size函数求取矩阵维数。解在MATLAB命令窗口中依次输入图2-7所示语句并回车确认。,图2-7例2.3输入语句及返回结果,2.2.3矩阵及其元素的表示如前所述,MATLAB的起源即“矩阵实验室”,矩阵是MATLAB进行数据处理的基本变量单元。因此,掌握矩阵的表示方法是进行MATLAB编程和应用的基础。1.矩阵的表示用MATLAB语言表示一个矩阵非常容易。如图2-8所示,在MATLAB命令窗口中输入语句并回车确认,即可见矩阵变量A被成功赋值,并在MATLAB的工作空间中建立了一个名为A的矩阵变量,用户可以在后继的指令和函数中随意调用该矩阵。在输入过程中必须遵循以下规则,,1必须使用方括号[]包括矩阵的所有元素;2矩阵不同的行之间必须用分号或回车符隔开;3矩阵同一行的各元素之间必须用逗号或空格隔开。为方便用户使用,提高编程效率,除了最基本的直接输入方法外,MATLAB还提供给用户一些可以直接调用的内置基本矩阵函数,有时可以成为创建矩阵的捷径。MATLAB提供的主要内置基本矩阵函数如表2-4所示。,,,图2-8矩阵的输入及表示,,,表2-4MATLAB内置基本矩阵函数,例2.3中,就曾使用过rand3函数,并产生一个3阶的随机矩阵。下例中,将创建一个3阶的单位阵。【例2.4】调用eye函数创建一个3阶的单位阵。解在MATLAB命令窗口中输入如图2-9所示语句并回车确认。,图2-9eye函数创建的3阶单位矩阵,向量是矩阵的一种特例,前面介绍的有关矩阵的表示方法完全适用于向量,只是表示矩阵行列数的nm中,有一个系数为1。例如,如图2-10所示,在命令窗口中输入v1[1234]和v2[1;2;3;4],回车确认后观察结果,注意v1和v2的区别。,,,图2-10行向量和列向量的输入及表示,MATLAB还提供了一个便利且高效的表达式来给等步长均匀等分的行向量赋值,即冒号表达式。冒号表达式的基本调用格式为Vmpn其中,m、n为标量,分别代表向量的起始值和终止值,p代表向量元素之间步长值。例如,在MATLAB命令窗口中输入语句V00.21并回车确认,结果如图2-11。,,,图2-11冒号表达式在均匀等分向量中的应用,,利用MATLAB命令求矩阵A对角线元素之和。解在MATLAB命令窗口中输入图2-12所示语句并回车确认。,图2-12例2.5输入语句及返回结果,,,图2-13例2.6输入语句及返回结果,【例2.7】利用MATLAB命令,对例2.5矩阵A中的第二行元素置零。解在MATLAB命令窗口中输入图2-14所示语句并回车确认。,图2-14例2.7输入语句及返回结果,2.3矩阵的MATLAB运算矩阵运算是MATLAB最重要的运算,因为MATLAB的运算大部分都建立在矩阵运算的基础之上。MATLAB中包括三种矩阵运算类型矩阵的代数运算、矩阵的关系运算和矩阵的逻辑运算。其中,矩阵的代数运算应用最广泛。根据不同的应用目的,矩阵的代数运算又包含两种重要的运算形式按矩阵整体进行运算的矩阵运算、按矩阵单个元素进行运算的元素群运算。,,2.3.1矩阵的代数运算1.矩阵的算术运算矩阵算术运算的书写格式与普通算术运算相同,包括优先顺序规则,但其乘法和除法的定义和方法与标量截然不同,读者应在矩阵的运算意义上加以理解和应用。MATLAB矩阵的算术运算符及其说明如表2-5所示。,,,,表2-5MATLAB矩阵的算术运算符及其说明,在进行矩阵的算术运算时,需要注意以下几点1若A、B两矩阵进行加、减运算,则A、B必须维数相同,否则系统提示出错。2若A、B两矩阵进行乘运算,则A、B的内维必须相同即前一矩阵的列数等于后一矩阵的行数。设CmnAmkBkn,式中A、B的顺序不能任意调换,因为A*B和B*A的计算结果很可能是完全不同的。3若A、B两矩阵进行右除运算,则A和B的列数必须相等实际上,XB/ABA-1。,,4若A、B两矩阵进行左除运算,则A和B的行数必须相等实际上,XA\BA-1B。表2-6中列出了一些矩阵的算术运算示例,读者可仔细观察其中规律,并理解以上的注意事项。,,,,表2-6矩阵的算术运算示例,2.矩阵的运算函数MATLAB系统函数库中提供了一些常用的矩阵运算函数。矩阵的加、减、乘、除等运算对参与运算的矩阵都有各自的矩阵维数匹配要求。那么,如何判定各矩阵的维数呢内置size函数可以轻易解决这个问题。因此,熟悉这些对用户非常有用。表2-7列出了部分常用的矩阵运算函数。表2-8中列出了对矩阵A[12;34]的各种函数运行结果。,,,,表2-7常用的矩阵运算函数,,,表2-8矩阵运算函数应用示例,3.矩阵的元素群运算元素群即数组,是指1N或N1阶矩阵。元素群运算即矩阵中的所有元素按单个元素进行运算。为了与矩阵作为整体的运算符号相区别,元素群运算约定在矩阵运算符“*”、“/”、“\”、“”前加一个点符号“.”,以表示在做元素群运算,而非矩阵运算。元素群加、减运算的效果与矩阵加、减运算是一致的,运算符也相同。矩阵的元素群运算符及其说明如表2-9所示。,,,,表2-9矩阵的元素群运算符及其说明,例如,对于矩阵AB[12;34],表2-10表明了矩阵元素群运算和矩阵运算的差别。,,表2-10矩阵的元素群运算应用示例,4.元素群的函数MATLAB提供了几乎所有初等函数,包括三角函数、对数函数、指数函数和复数运算函数等。值得注意的是,大部分的MATLAB函数的运算都是按数组的运算规则进行的,即函数运算是分别作用于函数变量矩阵的每一个元素,这意味着这些函数的自变量可以是任意阶的矩阵。表2-11列出了MATLAB常用初等函数名及其对应功能。,,,,表2-11MATLAB常用初等函数名及其对应功能,图2-15例2.8输入语句及返回结果,2.3.2矩阵的关系运算MATLAB语言定义了各种矩阵的关系运算,其符号及意义如表2-12所示。,,表2-12MATLAB的关系运算符,这些关系运算都是针对两个矩阵对应元素的。因此,在使用关系运算时,首先应保证两个矩阵的维数一致或至少一个为标量。若参与运算的对象为两个矩阵,则关系运算对两个矩阵的对应元素进行关系比较,若关系满足,则将结果矩阵中该位置的元素置1,否则置0。若参与运算的对象之一为标量,则关系运算将矩阵的每一个元素与该标量逐一进行关系比较,若关系满足,则将结果矩阵中该位置的元素置1,否则置0。注意,关系运算比算术运算具有更高的优先权。例如,矩阵A[0234;1350]和B[1053;1505]的各种关系运算结果如表2-13所示。,,,,表2-13MATLAB的关系运算应用示例,2.3.3矩阵的逻辑运算MATLAB矩阵的基本逻辑运算符号及其意义如表2-14所示。在逻辑运算中,所有非零元素的逻辑值为“真”,用代码“1”表示;值为零的元素的逻辑值为“假”,用代码“0”表示。逻辑运算规则与关系运算基本一致,也是针对两个矩阵的对应元素。逻辑运算真值表也与一般二值运算真值表完全一致。,,表2-14MATLAB矩阵的基本逻辑运算符号及其意义,例如,矩阵A[0234;1350]和B[1053;1505]的各种逻辑运算结果如表2-15所示。,,表2-15MATLAB的逻辑运算应用示例,2.4MATLAB的程序流程控制作为一种程序设计语言,MATLAB同一般高级程序语言一样,为用户提供了丰富的程序结构语言来实现用户对程序流程的控制。MATLAB的程序流程控制主要包括循环控制和条件控制。2.4.1循环控制结构1.for循环结构for循环结构的格式为,,for循环变量向量表达式循环体语句组语句组是一组合法的MATLAB命令endend是必须的,这与C语言不同该循环结构的执行方式为从表达式的第一列开始,依次将表达式向量的各列之值赋值给变量,然后执行语句组中的命令,直到最后一列。通常使用的for循环格式为forimpn即用冒号表达式进行等步长向量的创建。,,,,图2-16例2.9输入语句及返回结果,2.while循环结构while循环结构的基本格式为while关系表达式循环体语句组end该循环结构的执行方式为首先判断关系表达式是否为真,若为真,则执行循环体的内容,执行完后再返回while引导的语句处,判断关系表达式是否依然为真;如果非真,则跳出循环。通常,通过循环语句组中对关系表达式进行改变来控制循环是否结束。,,,,图2-17例2.10输入语句及返回结果,2.4.2条件转移结构条件转移结构中最基本的是if条件转移结构语句。if条件转移结构的基本格式为if条件式条件块语句组1else条件块语句组2end该条件转移结构的执行方式为若条件式成立,则执行条件块语句组1语句;若条件式不成立,则执行条件块语句组2语句。,,上述基本结构只能处理较简单的条件,当程序运行的分支条件多于两个时,则可采用if条件转移结构的另一种格式if条件式1条件块语句组1elseif条件式2条件块语句组2elseif条件式n-1条件块语句组n-1else条件块语句组nend,,该条件转移结构的执行方式为若条件式1成立,则执行条件块语句组1语句;若条件式i成立,则执行条件块语句组i23语句;否则,执行条件块语句组n语句。【例2.11】已知A、B矩阵分别为A[123;456;789]、B[12;34]。判断两个矩阵维数是否相等,并返回判断结果。解在MATLAB命令窗口中输入图2-18所示语句并回车确认。,,,图2-18例2.11输入语句及返回结果,2.5M文件的编写M文件又可分为命令M文件简称命令文件和函数M文件简称函数文件两大类,其特点和适用领域均不同。2.5.1命令文件命令文件是由MATLAB语句构成的文本文件,以.m为扩展名。运行命令文件的效果等价于从MATLAB命令窗口中按顺序逐条输入并运行文件中的指令,类似于DOS下的批处理文件。,,命令文件运行过程中所产生的变量保留在MATLAB的工作空间中,命令文件也可以访问MATLAB当前工作空间的变量,其它命令文件和函数可以共享这些变量。因此,命令文件常用于主程序的设计。在例2.12中,将观测到命令文件和工作空间数据的共享。【例2.12】已知长方体的长a5、宽b4、高h3。编写命令文件求该长方体的表面积和体积。解1在MATLAB命令窗口中输入长方体参数a5;b4;h3;2新建一个文本文件,在该文本编辑窗口中输入求取表面积和体积的指令见图2-19。,,,图2-19例2.12命令文件编辑窗口,选择文本编辑器的菜单项[FileSaveAs],以文件名rect1.m保存在默认的当前工作目录中。3在MATLAB工作窗口中输入M文件名,得到结果如图2-20所示。,图2-20例2.12命令文件调用及结果,可见,命令文件在执行过程中,已经成功访问了MATLAB工作空间的变量和数据长方体长、宽、高参数a、b、h,并将执行的结果数据长方体的表面积和体积s、v保留在MATLAB的工作空间中,工作空间中的其它命令文件和函数可以共享这些变量。用户在应用命令文件时,可能希望将自己的文件保存在自定义的工作目录中,而不是保存在MATLAB默认的工作目录“安装路径\MATLAB\work”中。这时必须更改MATLAB的工作路径或添加MATLAB的搜索路径,否则运行命令文件时系统将无法找到该命令文件导致出错。,,【例2.13】将例2.12的命令文件rect1.m保存在用户自定义的路径中,测试执行的结果。解1打开MATLAB默认工作目录“安装路径\MATLAB\work”文件夹,删除例2.12保存在这里的rect1.m文件。2重新创建一个同样内容的命令文件。选择菜单项[File-SaveAs],在弹出的保存文件对话框中更改保存目录为“F\”,输入要保存的文件名rect1.m并确定保存。回到MATLAB命令窗口,输入初始数据及文件调用命令并返回结果,如图2-21所示。,,,图2-21例2.13调用结果,结果表明MATLAB未能正确搜索并执行保存在用户自定义目录中的命令文件。3单击菜单选项[File-SetPath],出现如图2-22所示的对话框,单击“添加目录”AddFolder按键,将弹出浏览文件夹对话框,选中文件夹“F”并确认,将用户文件保存的目录“F\”添加到MATLAB搜索路径中,点击“Save”按键保存设置。,,,图2-22在MATLAB搜索路径中添加用户自定义目录,现在,在MATLAB的搜索路径中出现了新增加的目录“F\”。保存后退出该窗口,并回到MATLAB命令窗口,输入文件调用命令并返回结果,如图2-23所示。结果表明若用户文件所在的目录不是当前默认的工作目录,则需要将其添加到MATLAB的搜索路径中,这样MATLAB才能正确搜索并执行命令另外一种方法即改变当前工作目录。,,,图2-23在搜索路径中添加自定义目录后的调用结果,2.5.2函数文件函数文件是M文件的另一种类型,它也是由MATLAB语句构成的文本文件并以.m为扩展名。MATLAB的函数文件必须以关键字function语句引导,其基本结构如下function[返回参数1,返回参数2,]函数名输入参数1,输入参数2,注释说明语句段,由引导输入、返回变量格式的检测语句函数体语句,,需要特别注意函数文件具有如下特点1函数名由用户自定义,与变量的命名规则相同。2保存的文件名必须与定义的函数名一致。3用户可通过返回参数及输入参数来实现函数参数的传递,但返回参数和输入参数并不是必需的。返回参数如果多于1个,则应用[]将它们括起来,否则可以省略[];输入参数列表必须用括起来,即使只有一个输入参数。4注释语句段的每行语句都应该用引导,后面的内容不执行。用户可用help命令显示出注释语句的内容,用于函数使用前的信息参考。,,5如果函数较复杂,则正规的参数个数检测是必要的。如果输入或返回参数格式不正确,则应该给出相应的提示。函数中输入和返回参数的实际个数分别由MATLAB内部保留变量nargin和nargout给出,只要运行了该函数,MATLAB将自动生成这两个变量,因此用户编程可直接应用。6与一般高级语言不同的是,函数文件末尾处不需要使用end指令循环控制和条件转移结构中的除外。,,【例2.14】以长方体的长、宽、高参数作为函数参数,编写函数文件来求解长方体的表面积和体积。解1新建一个文本文件,在该文本编辑窗口中见图2-24输入求表面积和体积的指令。,图2-24例2.14函数文件编辑窗口,2单击菜单选项[File-SaveAs],将该文件以文件名rect2.m保存在默认的当前工作目录中。3在MATLAB命令窗口中调用该函数文件,得到结果如图2-25所示。,图2-25例2.14函数文件调用及结果,与命令文件相比,函数文件的最大优点之一是实现了参数的传递,这极大地提高了文件的通用性。例如,在分别用命令文件和函数文件实现的长方体表面积和体积的求解程序中,所用的指令数几乎一样,但命令文件rect1.m只能在当前工作窗口中使用,参数必须在工作空间中给定,而函数文件rect2.m则可以被任何主程序或其它函数调用,参数可以任意设定。,,【例2.15】编程实现一个nm阶的矩阵,使第i行第j列元素值为1/ij-1。要求在编写的函数中实现下面几点1如果只给出一个输入参数,则会自动生成一个方阵,即令mn;2在函数中给出合适的帮助信息,包括基本功能、调用方式和参数说明;3检测输入和返回变量的个数,如果有错误则给出错误信息。解1根据要求,编写一个myfunc函数,文件名为myfunc.m,存放在MATLAB的当前工作路径下。该函数文件如图2-26所示。,,,图2-26例2.15函数文件编辑窗口,2在MATLAB命令窗口中调用该函数文件,得到结果如图2-27所示。,图2-27例2.15函数文件调用及结果,2.6MATLAB的图形绘制MATLAB除了强大的数值分析功能外,还具有方便的绘图功能。利用MATLAB丰富的二维、三维图形函数和多种修饰方法,只要指定绘图方式并提供绘图数据,就可以绘制出理想的图形。由于MATLAB的图形系统是建立在诸如线、面等图形对象集合基础之上的,因此用户可以对任何一个图形元素进行单独地修改,而不影响图形的其它部分。,,2.6.1二维图形的绘制1.基本绘图命令MATLAB中最常用的绘图函数为plot,根据函数输入参数不同,常用的几种调用格式如表2-16所示。其中,option用来设置曲线属性的选项,其内容主要包括诸如颜色、线型、标记类型等曲线属性。option选项并不是必需的,若缺少该项,MATLAB将按系统默认格式统一安排各条曲线的属性值。,,,,表2-16绘图函数plot的常用调用格式,MATLAB提供的option选项的属性如表2-17所示。,,表2-17option选项的属性,在绘制图形时,需要注意以下几点1用来绘制图形的数据必须已经存储在工作空间中。2对应的x轴和y轴的数据长度必须相同。3若省去选项option,系统将按默认的格式绘制曲线。4option中的属性可以多个连用,例如选项-.g表示绘制绿色的点划线。【例2.16】试在同一图形窗口中绘制出一个周期内的正弦曲线和余弦曲线。解在MATLAB命令窗口中输入图2-28所示语句并回车确认。,,,图2-28例2.16输入语句,运行后,系统自动弹出图形窗口界面,并显示结果如图2-29所示。,,图2-29例2.16输出图形界面,,用户可能会对系统默认的绘图结果不满意,并提出更具体的要求,比如1正弦曲线用红色的点线绘制;2余弦曲线用绿色的*标记绘制;3显示x轴线,以符合平常坐标轴习惯。在MATLAB命令窗口中重新输入语句并确认见图2-30。其中,命令linex,y是MATLAB提供的除plot命令外的另一种绘制直线的命令,这里用来绘制x轴。,,,图2-30例2.16调整要求后的输入语句,绘图结果如图2-31所示。,图2-31例2.16调整要求后的输出图形界面,2.图形修饰函数MATLAB提供了多种图形函数,用于图形的修饰。常用的图形修饰函数名称及其功能说明如表2-18所示。,,表2-18MATLAB常用图形修饰函数及其功能说明,【例2.17】进一步修饰例2.16的图形,实现以下要求1将图形的x轴的大小范围限定在[0,2p]之间,y轴的大小范围限定在[-2,2]之间;2x、y坐标轴分别标注为弧度值、函数值;3图形标题标注为正弦曲线和余弦曲线;4添加图例标注,标注字符分别为y1、y2;5给图形添加网格线;6在两条曲线上分别标注文本y1sint、y2cost。,,解1在命令窗口中输入图2-32所示程序代码。程序运行结果如图2-33所示。2标注文本。如图2-33所示,在执行第一个gtext时,需要在图形窗口确定该文本的位置。打开图形窗口,可以看到一个跟随用户鼠标移动的十字形指针。将鼠标拖动到正弦曲线图形附近,然后单击鼠标,字符串y1sint即添加到此处。在执行第二个gtext命令时,同样需要用鼠标将十字形指针拖动到余弦曲线图形附近并单击鼠标,字符串y2cost即添加到此处。最终显示的图形画面如图2-34所示。,,,图2-32例2.17输入程序代码,,图2-33例2.17输出图形界面字符串未添加,,图2-34例2.17最终输出图形界面,3.特殊二维曲线绘制除了标准的二维曲线绘制之外,MATLAB还提供了多种具有特殊意义的图形绘制函数,其常用调用格式如表2-19所示。其中,参数x和y分别表示x轴、y轴绘图数据。这些特殊图形绘制函数各具意义,其中bar函数可用于统计分析,stem、stairs函数可用于离散序列数据的显示,polar、loglog函数分别可用于绘制极坐标图和对数图。,,,,表2-19MATLAB的特殊二维曲线绘制函数,图2-35例2.18输入程序代码,程序运行结果如图2-36所示。,图2-36例2.18输出图形界面a火柴杆图;b阶梯图;c二维条形图;d极坐标图,4.图形窗口控制MATLAB提供了一系列专门的图形窗口控制函数,通过这些函数,可以创建或者关闭图形窗口,可以同时打开几个窗口,也可以在一个窗口内绘制若干分图。这些函数及其功能说明如表2-20所示。,,,,表2-20MATLAB图形窗口控制函数及其功能说明,使用图形窗口控制函数时需要注意如下几点1在命令窗口中运行绘图指令后,将自动创建一个名为Figure1的图形窗口。这个窗口被当作当前窗口,所有的绘图指令在该图形窗口中执行,后续绘图指令覆盖原图形或者叠加在原图形上。2使用subplot命令时,各个绘图区域以“从左到右、先上后下”的原则来编号。MATLAB允许每个绘图区域以不同的坐标系单独绘制图形。【例2.19】已知y1sint,y2cost,y3sintcost。试在同一坐标系中绘制这3条曲线。解在命令窗口中输入图2-37所示程序代码。,,,图2-37例2.19输入程序代码,程序运行结果如图2-38所示。,图2-38例2.19输出图形界面,读者可以去掉上述代码中的holdon命令再运行代码,观察图形并比较。【例2.20】试将例2.18中的二维条形图、火柴杆图、阶梯图和极坐标图在同一窗口中显示。解在命令窗口中输入图2-39所示程序代码。结果如图2-40所示。,,,图2-39例2.20输入程序代码,,图2-40例2.20输出图形界面,2.6.2三维图形的绘制除了最常用的二维图形外,MATLAB还提供了三维数据的绘制函数,可以在三维空间中绘制曲线或曲面。1.三维曲线的绘制三维曲线的绘制与二维曲线的绘制方法基本一致。常用的调用格式如下plot3x,y,z,optionplot3x1,y1,z1,option1,x2,y2,z2,option2,其中,x、y、z所给出的数据分别为x、y、z坐标值,option为选项参数,plot3指令中参数的含义与plot指令类似,只是多了一个z方向的参数。,,,图2-41三维螺旋线图形,例如,下面的代码将绘制出如图2-41所示的三维螺旋线。t0pi/508*pi;xsint;ycost;plot3x,y,t;xlabelx;ylabely;zlabelt;三维曲线修饰与二维图形的图形修饰函数相似,但比二维图形的修饰函数多了一个z轴方向,例如axis[Xmin,Xmax,Ymin,Ymax,Zmin,Zmax]。,,特殊三维图形绘制与二维图形绘制类似,也可绘制一些具有特殊意义的三维图形。输入如下代码,可以得到如图2-42所示的特殊三维图形。t0pi/502*pi;xsint;ycost;stem3x,y,t;xlabelx;ylabely;zlabelt;,,,图2-42特殊三维图形,2.三维曲面的绘制三维曲面方程存在两个自变量x、y和一个因变量z。因此,绘制三维曲面图形必须先在xy平面上建立网格坐标,每一个网格坐标点和它对应的z坐标所确定的一组三维数据就定义了曲面上的一个点。三维曲面绘制中,常用的3个函数如表2-21所示。,,表2-21三维曲面绘制函数,图2-43例2.21输入程序代码,程序运行结果如图2-44和2-45所示。其中,图2-44为mesh函数运行结果,呈网格状;图2-45为surf函数运行结果,带阴影效果。,,,图2-44mesh函数绘制的三维曲面效果图,,图2-45surf函数绘制的三维曲面效果图,2.6.3图形对象属性设置1.图形对象及其属性前已论述,MATLAB用户可以对任何一个图形元素进行单独修改,而不影响图形的其它部分。这种独立的图形元素称为图形对象,图形对象的修改通过调整其属性来完成。MATLAB中常用的图形对象及其主要属性如表2-22所示。,,,,表2-22MATLAB常用图形对象及其主要属性,当调用plot命令绘制二维曲线时,MATLAB的执行过程大致如下1使用figure命令,在根对象root上生成一个图形窗口对象figure。2使用axis命令,在图形窗口内生成一个绘图区域axis对象。3最后用line命令在axes指定的区域内绘制线条line对象。因此,MATLAB所绘制的图形是由基本的图形对象组合而成的,可以通过改变图形对象的属性来设置所绘制的图形。,,2.图形可视编辑工具MATLAB执行绘图函数后,将弹出图形管理窗口。图形管理窗口除了简单的显示图形功能外,本身就是一个功能强大的图形可视编辑工具,可实现的功能主要如下1通用的图形文件管理功能,如保存、打开、新建图形文件等;2通用的图形效果编辑功能,如图形放大、缩小、旋转、对齐等;3图形对象插入功能,如插入坐标轴名称、图形标题、图例标注、线段、文字等;,,4独立设置窗口中各图形对象属性功能,如线段的类型、颜色、粗细等。图形对象插入功能可通过选择菜单项[Insert]后,再选择相应的对象选项来完成,如图2-46所示。该功能与前面的图形修饰函数一致。如选择菜单项[InsertTitle]与函数titlestring功能一致,选择菜单项[Insertlegend]与函数legendstring1,string2,功能一致,但前者明显比后者简便,更具可视性。,,,图2-46图形管理窗口及其菜单功能,,,图2-47图形管理窗口中的属性编辑窗口a方法一;b方法二,注意,单击选中的目标对象,属性编辑窗口将自动切换为该对象的属性设置页。因此,不同目标对象属性页的切换,不必通过关闭当前属性编辑窗口来完成。当然,上述方法中,在单击鼠标右键后,也可以不进入属性页,而选择直接通过菜单项设置相应属性。如单击鼠标左键选中线段对象,然后单击鼠标右键,将出现如图2-48所示菜单项。单击鼠标左键选中图形窗口的空白区域,然后单击鼠标右键,将出现如图2-49所示菜单项。,,,图2-48线段对象鼠标右键快捷菜,,图2-49图形窗口对象鼠标右键快捷菜单,2.7MATLAB编程仿真与应用MATLAB强大的运算功能和图形功能,为用户实现各领域的编程仿真提供了有力的工具。本节介绍MATLAB语言在电气信息领域内的一些基本仿真实现,使读者具有基本的MATLAB语言应用能力。2.7.1简单电路仿真中的应用有许多专用的可视化工具软件可以进行电路的仿真,这里仅利用MATLAB编程实现简单电路的仿真,以进一步熟悉编程方法和技巧。利用MATLAB语言编程解决实际问题的思路,尚需要读者在实际应用中举一反三。,,【例2.22】某一阶低通电路如图2-50所示,已知R2Ω,C0.5F,电容初始电压为0。1设一正弦电压源Vstvmcoswt,vm10V,w2rad/s,当t0时,开关S闭合。求电容电压的全响应,区分其暂态响应与稳态响应,并画出波形。2设以电容电压为响应,求频率响应函数,并画出其幅频特性和相频特性。,,,图2-50一阶低通电路,,,②MATLAB编程实现R2;C0.5;TR*C;um10;w2;Zc1/j*w*C;t00.110;absHabsZc/RZc;PhiHangleZc/RZc;Ucstum*absH*cosw*tPhiH;Uctr-um*absH*cosPhiH*exp-t/T;UcUcstUctr;plott,Uc,-,t,Ucst,,t,Uctr,-.,gridlegendUc,Ucst,Uctr,,,,图2-51一阶低通电路的全响应、暂态响应与稳态响应仿真波形,②MATLAB编程实现R2;C0.5;num1;传递函数的分子项系数向量den[R*C,1];传递函数的分母项系数向量systfnum,den;tf函数用以建立系统函数基于传递函数形式bodesys,gridonbode函数绘制目标系统的频谱特性曲线③运行程序,得到以电容电压为响应的响应函数的幅频特性和相频特性,如图2-52所示。,,,图2-52一阶低通电路的幅频特性和相频特性响应曲线,2.7.2电力信号分析处理中的应用数字信号处理技