MATLAB程序设计语言简介.ppt
1,本章主要教学内容MATLAB的基本功能与特点MATLAB的操作环境及桌面平台MATLAB的基本操作MATLAB的编程应用,第6章,MATLAB程序设计语言,2,本章教学目的及要求熟悉MATLAB的基本功能与特点掌握MATLAB的桌面平台及操作使用方法掌握MATLAB的基本编程应用,第6章,MATLAB程序设计语言,3,6.1 MATLAB基础 6.1.1 MATLAB的产生与发展 20世纪70年代,美国新墨西哥大学计算机科学系主任Cleve Moler教授采用FORTRAN语言编写了一套交互式软件系统,称其为MATLAB,意思是“矩阵实验室,主要用于矩阵运算等数值处理功能。1984年,Cleve Moler教授联合其他数学家和软件专家成立了Mathworks软件开发公司,把MATLAB正式推向市场。20世纪90年代初MATLAB已成为国际控制领域公认的标准计算软件。1993年后,Mathworks公司推出MATLAB 4.x版本。1997年后,Mathworks公司又推出了MATLAB 5.x版本。2000年后Mathworks公司推出了最新产品MATLAB 6.x版。,第6章,MATLAB程序设计语言,4,6.1.2 MATLAB的主要功能1数值计算和符号计算功能 MATLAB 是以矩阵作为数据操作的基本单位,还提供了丰富的数值计算函数,方便了程序设计。2绘图功能 提供了两个层次的绘图操作:一种是对图形句柄进行的低层绘图操作,另一种是建立在低层绘图操作之上的高层绘图操作。3 MATLAB工具箱 包括两大类:功能性工具箱和科学性工具箱。,第6章,MATLAB程序设计语言,5,6.1.3 MATLAB的特点 MATLAB在数值计算、符号运算及图形处理方面在同类产品中占有较大的优势。它是一种面向21世纪的科学计算语言,具备开放性、简单易学、易操作、实用性强等优点,已经成为科研人员和工程技术人员必不可少的工具。(1)符号运算功能强大(2)控制算法选择容易(3)编程语言简单易学(4)扩充能力和可开发性强(5)编程容易且工作效率高,第6章,MATLAB程序设计语言,6,MATLAB程序设计语言,第6章,6.1.4 MATLAB 6.x版本的改进(1)系统结构的改进(2)强大的帮助功能(3)新增的数值处理功能(4)程序处理与控制功能(5)其它控制产品 MATLAB 6.x软件包中还集成了控制系统分析和设计的其它相关工具箱和软件包,用户可以完成诸如系统辨识、系统建模、仿真以及鲁棒控制、模糊控制和神经网络控制等系统设计的任务。,7,第6章,6.2 MATLAB操作平台 6.2.1 MATLAB的安装 安装MATLAB 6.x 系统,需要运行系统自带的安装程序setup.exe。6.2.2 MATLAB桌面平台MATLAB的启动:(1)双击系统桌面的MATLAB图标;(2)在开始菜单程序选项中选择MATLAB快捷方式;(3)在MATLAB安装路径的bin子目录中双击可执行文件matlab.exe。启动后,就可进入MATLAB默认设置的桌面平台,如图6-1所示。,MATLAB程序设计语言,8,第6章,图6-1 MATLAB的桌面平台,MATLAB程序设计语言,9,第6章,退出MATLAB可以采用的方法有:在文件操作的下拉菜单File中,选择Exit MATLAB命令;在命令窗口下,直接键入exit或quit命令,均可退出MATLAB;单击MATLAB主窗口的“关闭”按钮。,MATLAB程序设计语言,10,2.MATLAB的桌面平台 默认设置情况下的桌面平台包括6个窗口,各窗口的功能和特点简单介绍如下:(1)MATLAB主窗口:主窗口用来进行一些整体的环境参数的设置。包括6个下拉菜单和10个按钮控件。(2)命令窗口:是MATLAB的主要交互窗口,用于输入命令以及显示除图形以外的所有执行结果。在主窗口的“View”菜单下选择“Command Window”命令,可以打开或关闭MATLAB的命令窗口。如图6-2所示。,第6章,MATLAB程序设计语言,11,第6章,图6-2 MATLAB的命令窗口,MATLAB程序设计语言,12,(3)历史记录窗口 在主窗口的“View”菜单下选择“Command History”命令,可以打开或关闭MATLAB的历史记录窗口,其窗口形式如图6-3所示。在默认设置下,历史记录窗口中会保留自安装起所有命令的历史记录,并标明使用时间,双击某一行命令,即在命令窗口中执行该行命令。单击某一行命令并拖动到命令窗口,再按回车键,也可执行该命令。,第6章,MATLAB程序设计语言,13,第6章,图6-3 命令历史窗口,MATLAB程序设计语言,14,(4)当前目录窗口:是指MATLAB运行文件时的工作目录,在主窗口的“View”菜单下选择“Current Directory”命令,可以打开或关闭MATLAB的当前目录窗口,其形式如图6-4所示。在当前目录窗口中可以显示或改变当前目录,还可以显示当前目录下的文件并提供搜索功能。通过目录下拉列表框可以选择已经访问过的目录,还可以打开路径选择对话框,设置或添加路径。,第6章,MATLAB程序设计语言,15,第6章,图6-4 当前目录窗口,MATLAB程序设计语言,16,(5)工作空间窗口:是MATLAB用于存储各种变量和结果的内存空间,在主窗口的“View”菜单下选择“Workspace”命令,可以打开或关闭MATLAB的工作空间窗口,如图6-5所示。工作空间窗口可以显示工作空间中所有变量的名称、大小、字节数和变量的类型说明,也可以对变量进行观察、编辑、保存和删除。,第6章,MATLAB程序设计语言,17,第6章,图6-5 工作空间窗口,MATLAB程序设计语言,18,(6)发行说明书窗口:这是MATLAB 6.x版本所特有的,用来说明系统中已经安装的Mathworks公司各种产品目录,包括工具包、演示以及帮助信息等,如图6-6所示。在主窗口的“View”菜单下选择“Launch Pad”命令,可以打开或关闭该窗口。,第6章,MATLAB程序设计语言,19,第6章,图6-6 发行说明书窗口,MATLAB程序设计语言,20,6.2.3 MATLAB的程序编辑器 MATLAB提供了一个程序编辑/调试器,如图6-7所示。在MATLAB的命令窗口中有三种方式可进入程序编辑/调试器:(1)选择菜单栏的“File”项中的“New”或“Open”项。(2)选择工具栏的“New”或“Open”项。(3)在命令窗口中输入edit命令。,第6章,MATLAB程序设计语言,21,第6章,图6-7 程序编辑/调试器窗口,MATLAB程序设计语言,22,MATLAB程序设计语言,第6章,6.2.4 MATLAB中的M文件与M函数1M文件 采用MATLAB语言编写的程序称为M文件,存储时以.m作为文件的扩展名。M文件可以直接执行。M文件是一个文本文件,可以采用以下3种方法来建立。(1)菜单操作:在MATLAB主窗口的File文件菜单中选择New菜单项,然后选择M-File命令,可以启动文本编辑器,输入M文件的内容后将文件存盘。(2)命令按钮操作:单击MATLAB主窗口工具栏上的New M-File命令按钮,启动文本编辑器后输入M文件内容并存盘。(3)命令操作:在MATLAB命令窗口输入命令edit,启动文本编辑器后,输入M文件内容并存盘。,23,MATLAB程序设计语言,第6章,2M函数 M函数是由function语句引导的用户自定义函数。和M文件不同,M函数必须由其他语句来调用,一般不能在命令窗口单独键入函数名来运行。M函数的第一行为关键字function,函数第一次执行时将生成内存代码,生成的变量放在函数的工作区。在MATLAB中有大量的内部函数及大量的工具箱函数,使用它们可以完成大部分的工作。但由于不同的用户有不同的需要,MATLAB允许用户开发自己的专用或通用函数,以扩展MATLAB的函数应用。,24,MATLAB程序设计语言,第6章,M函数的基本格式为:Function 输出形参表=函数名(输入形参表)注释说明语句段 函数体语句 输出形参如果是多个的话则应该用方括号括起来。有了M函数之后,可以用下列形式进行函数调用:输出形参表=函数名(输入变量的取值),25,MATLAB程序设计语言,第6章,【例6.2】编写实现加减法运算的M函数,并进行调用。首先编写M函数,函数取名为addec。Functionoutl,out2=addec(inl,in2)%outl,out2;addec(m1,in2)%outl=ihtl+int2;out2=inl-in2;outl=inl+in2;out2=inl-in2;然后,在MATLAB的命令窗口调用这个函数文件:a,b=addec(10,20)disp(a,b)显示结果为:30 10,26,6.2.5 MATLAB帮助系统 MATLAB的帮助系统功能非常完善,有联机帮助系统、命令窗口查询帮助系统和联机演示系统等。1.联机帮助系统可以采用以下3种方式进入MATLAB的联机帮助系统。(1)单击MATLAB主窗口工具栏中的Help按钮。(2)选择Help下拉菜单中的“MATLAB Help”选项。(3)在命令窗口中执行helpwin、helpdesk或doc命令。联机帮助系统窗口如图6-8所示。,第6章,MATLAB程序设计语言,27,第6章,图6-8 联机帮助窗口,MATLAB程序设计语言,28,2.命令窗口查询帮助 要了解MATLAB,最简洁快速的方式就是使用命令窗口查询帮助,通过帮助命令可以对特定的内容进行快速查询。(1)help命令:查询函数语法非常方便。(2)lookfor命令:查询根据用户提供的关键字搜索到的相关函数。(3)模糊查询:用户只要输入命令的前几个字母,然后按Tab键,系统就会列出所有以这几个字母开头的命令,方便了用户的使用。,第6章,MATLAB程序设计语言,29,3.联机演示系统 对于初学MATLAB的用户来说,该软件自带的联机演示系统非常有用。要打开该系统可以通过单击MATLAB主窗口菜单的帮助“Help”来选择演示系统选项“Demos”,或者在命令窗口输入“demo”,都可以进入到MATLAB的演示界面,如图6-10所示。,第6章,MATLAB程序设计语言,30,第6章,图6-10 演示界面窗口,MATLAB程序设计语言,31,6.3 MATLAB的基本应用6.3.1 MATLAB数值运算 解析数学的一些基本问题都可用MATLAB的符号运算函数来解决,诸如函数的微分、积分、微分方程求解以及积分变换等。1.变量与赋值 变量代表一个或若干个内存单元,要事先给变量命名和赋初值。MATLAB会自动根据所赋予变量的值或对变量所进行的操作来确定变量的类型。MATLAB中有一些预定义的变量,这些特殊的变量称为常量。表6-1列出了经常使用一些特殊变量及其功能。,第6章,MATLAB程序设计语言,32,第6章,表6-1 MATLAB的特殊变量及其功能,33,MATLAB的赋值语句有两种使用格式:(1)变量=表达式(2)表达式 第1种语句方式是将右边的表达式的值赋给左边的变量;第2种语句的方式是将表达式的值赋给MATLAB的预定义变量ans。,第6章,MATLAB程序设计语言,34,第6章,2.2MATLAB矩阵(1)矩阵变量的赋值:在MATLAB中,矩阵的输入很直观方便,矩阵元素用方括号“”括起来,相邻元素之间用逗号或空格分隔,采用分号可以实现换行。【例1】已知矩阵A和C分别为:在MATLAB中可以采用下面的指令来表示:A=1,2,3;4,5,6 C=4;5;6,MATLAB程序设计语言,35,第6章,【例2】如果要给变量A赋矩阵为:可以在MATLAB的命令窗口中输入:A=1,2,3;4,5,6;7,8,9显示结果为:A=1 2 34 5 67 8 9,MATLAB程序设计语言,36,第6章,(2)矩阵的基本运算 MATLAB中的矩阵运算只要符合矩阵维数的要求即可,常用的算术运算和关系运算(包括逻辑运算)符。【例3】对给定矩阵A和B做加减法运算如下:,C=A+B%C为矩阵A与B之和 D=A-B%D为矩阵A与B之差,MATLAB程序设计语言,37,第6章,运行结果为:C=1 4 4 6 10 9D=1 0 2 2 0 3,MATLAB程序设计语言,38,【例4】对给定矩阵A和B做乘法运算如下:,第6章,C=A*B 运行结果为:C=7 1116 29,MATLAB程序设计语言,39,第6章,3.数值分析(1)极小化:MATLAB提供了fmin和fmins两个函数,分别用来寻找一维和n维函数的极值。【例6.4】求函数f(x)=10*exp(-x)*cos(x)的极小值,可以采用下列语句:fx=10*exp(-x)*cos(x);%定义函数fplot(fx,2,5);%画出给定函数的的曲线Xmin=fmin(fx,2,5)%求极小值运行的结果为:Xmin=2.3562 执行情况如图6-11所示。,MATLAB程序设计语言,40,第6章,图6-11 函数的极值曲线,MATLAB程序设计语言,41,第6章,(2)求零点:MATLAB提供了函数fzero(),用于寻找一维函数的零点。【例6.5】对f(x)求解零点的过程如下:Xzero=fzero(fx,5)%求与x=5相邻的零点运行结果为:Xzero=4.7124Xzero=fzero(fx,2)%求与x=2相邻的零点运行结果为:Xzero=1.5708,MATLAB程序设计语言,42,第6章,(3)积分:MATLAB提供了三个函数trapz、quad和quad8,可以计算函数在有限区域内的积分。Trapz()是通过计算梯形面积来近似函数的积分;quad()使用Simpson递归方法;quad8()使用Newton-costes递归方法进行数值积分。(4)微分:MATLAB提供了一个有限插分函数diff,可以做数值微分,但使用有限插分进行近似将导致噪声的放大,造成较差的结果。此外,MATLAB提供了很多实用的数值分析函数,常用的一些在表6-4中列出。,MATLAB程序设计语言,43,第6章,表6-4 常用的数值分析函数,MATLAB程序设计语言,44,第6章,6.3.2 MATLAB绘图1.二维图形 绘制二维图形采用plot函数,对于不同形式的输入,该函数可以实现不同的功能。其格式和处理功能分析如下:(1)plot(x):绘制的图形以向量索引为横坐标值、以向量元素值为纵坐标值,画出一条连续曲线即折线。(2)plot(x,y):绘制向量y对向量x的图形。(3)plot(y,y,s):绘制不同的线型、标识、颜色等图形。其中s为一字符,代表不同线型、点标和颜色。,MATLAB程序设计语言,45,第6章,【例6.6】在Matlab命令窗口输入以下命令:y=rand(50,1);%y为501的随机矩阵 plot(y)绘制的结果如图6-12所示。又如,在Matlab命令窗口输入以下语句:t=0:.1:2*pi;%定义t的取值范围为0到2,步长为0.1y=sin(t);cos(t);plot(t,y)则绘制的二维曲线如图6-13所示。,MATLAB程序设计语言,46,第6章,图6-12 plot(Y)绘制图形 图 6-13 plot(X,Y)绘制图形,MATLAB程序设计语言,47,第6章,2.三维图形 三维图形绘制中经常用到的基本绘图命令有函数plot3、网图函数以及着色图等。(1)plot3函数:这是plot函数的三维扩展。【例6.8】在MATLAB命令窗口输入以下命令:x,y=meshgrid(-5:.1:5);%形成网格 z=exp(-(x.2+y.2);%取指数函数 plot3(x,y,z)%绘制曲线 运行后显示的图形如图6-16所示。,MATLAB程序设计语言,48,第6章,图6-16 plot3绘制的三维图形,MATLAB程序设计语言,49,第6章,(2)网图函数:函数mesh可以用来绘制三维的网图。具体调用格式如下:mesh(x,y,z,c):绘制四个矩阵变量的彩色网格面图形。观测点可由函数view定义,坐标轴可由axis函数定义,颜色由c设置,也可由函数colormap实现。mesh(x,y,z):使用c=z,即网图高度正比于图高。除了上面介绍的二维、三位图形外,MATLAB还可以绘制其他的图形,如特殊的二维图形和三维图形,以及四维表现图等。,MATLAB程序设计语言,50,第6章,6.3.3 MATLAB程序设计基础1MATLAB程序设计基本规则MATLAB程序设计可以在MATLAB的编辑/调试器里进行,程序书写格式与函数的结构类似。基本结构组成示意如下:,MATLAB程序设计语言,51,第6章,MATLAB程序设计语言,2.MATLAB程序控制结构(1)顺序结构是指按照程序中语句的排列顺序依次执行。一般只涉及数据的输入、计算、处理和输出。数据的输入可以在命令窗口中使用input函数来进行,格式为:Ainput(提示信息,选项);其中提示信息为一个字符串,用来提示用户输入相应信息。例如MATA=input(Input MATA please);执行该语句,屏幕上出现“Input MATA please”,然后用户可以输入MATA1,2,3;4,5,6;7,8,9并敲回车键确定。此时已将矩阵的值赋予了MATA。,52,第6章,MATLAB程序设计语言,数据的输出MATLAB中提供的命令窗口输出函数主要是disp函数,其具体格式为:disp(输出值);在上例中,如果需要输出矩阵MATA,在命令窗口输入disp(MATA);屏幕上会显示输出结果为:MATA=1 2 3 4 5 6 7 8 9,53,第6章,(2)分支选择语句:有条件分支语句if与开关分支语句switch。条件分支语句有以下三种格式:1)单分支if-end语句:if 逻辑表达式 语句组 end 双分支f-else-end语句:if 逻辑表达式 语句组1 else 语句组2 end,MATLAB程序设计语言,54,第6章,多分支if-elseif-end语句:if 逻辑表达式1 语句组1 elseif 逻辑表达式2 语句组2 else 语句组3 end,MATLAB程序设计语言,55,第6章,开关分支switch 语句根据表达式的取值不同,分别执行不同的语句,其格式为:switch 表达式 case 表达式1 语句组1 case 表达式2 语句组2 otherwise 语句组n end,MATLAB程序设计语言,56,第6章,(2)循环语句:1)for循环语句,格式为:for 循环变量=起始值:步长:终止值 循环体语句组 end 2)while循环语句,语句格式为:while 表达式 循环体语句组 end,MATLAB程序设计语言,57,第6章,(3)MATLAB程序流程控制指令:break()函数指令 break()函数指令的作用是中断循环语句的执行。中断的循环语句可以是for语句,也可以是while语句。当满足在循环体内设置的条件时,可以通过使用的break()函数指令使之强行退出循环,而不是达到循环终止条件时再退出循环。显然,循环体内设置的条件必须在break()函数指令之前。对于嵌套的循环结构,break()函数指令只能退出包含它的最内层循环。,MATLAB程序设计语言,58,第6章,return()函数指令return()函数指令的作用是中断函数的运行,返回到上级调用函数。return()函数指令既可以用在循环体内,也可以用在非循环体内。pause()函数指令pause()函数指令是暂停指令。运行程序时,到pause()函数指令执行后,程序将暂停,等待用户敲任一键后继续执行。除此之外,pause()函数指令还有几种使用形式:形式pause(n)的功能为暂停n秒;形式pause off的功能为其后的任何暂停语句无效;形式pause on的功能为其后的暂停命令有效。,MATLAB程序设计语言,59,本章小结,MATLAB是一种高性能、交互式的科学计算工具,其主要功能包括数值和符号计算、绘图、编程语言以及应用工具箱,具有非常友好的图形界面,用户可以通过对MATLAB内函数的简单调用,便可迅速地绘制出具有专业水平的图形。MATLAB的特点体现在强大的符号运算功能、控制算法选择容易、编程语言简单易学、扩充能力和可开发性强、工作效率高。MATLAB桌面平台包括主窗口、命令窗口、工作间管理窗口、历史窗口、当前目录窗口、发行说明书窗口和工作间管理窗口等。使用程序编辑/调试器窗口可以编写出具有特殊目的的程序,这些程序可以是M函数,也可以是M文件。M文件可以直接在命令窗口执行,M函数必须由其他语句来调用。,第6章,60,第6章,本章小结,MATLAB提供的联机帮助包括命令窗口查询帮助和联机演示系统等,可以很好的获得相关函数和命令的使用方法。MATLAB的图形工具箱包括了二维、三维甚至四维表现图和对图形进行着色、消隐、光照处理、渲染及多视角处理等多项功能于一身,方便了用户的使用。MATLAB程序设计可以充分利用MATLAB数据结构的特点,通过解释性处理和编辑/调试器窗口,能够简单方便、快捷高效地编辑与调试程序。,61,第6章内容到此结束,谢谢各位!,