MATLAB_4-1_第三章程序设计初步.ppt
《MATLAB_4-1_第三章程序设计初步.ppt》由会员分享,可在线阅读,更多相关《MATLAB_4-1_第三章程序设计初步.ppt(85页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、MATLAB_4-1_第三章程序设计初步 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望OUTLINEMATLAB的的m文件的创建和使用文件的创建和使用MATLAB程序控制结构程序控制结构程序设计程序设计调试的基本方法调试的基本方法 2MATLAB SDU什么是什么是m文件文件用户如想灵活应用matlab去解决实际问题,充分调用matlab的科学技术资源,就需要编辑m文件包含matlab语言代码的文件称为m文件,其扩展名为m。编辑m文件可使用各种文本编辑器。3MA
2、TLAB SDU2.m文件文件 m文件的语法类似于文件的语法类似于c语言,但又有其自身特语言,但又有其自身特点。它只是一个简单的点。它只是一个简单的ASCII码文本文件,执码文本文件,执行程序时逐行解释运行程序,行程序时逐行解释运行程序,matlab是解释是解释性的编程语言。性的编程语言。m文件有两类文件有两类 独立的独立的m m文件文件 称命令文件,脚本称命令文件,脚本(script)script)可调用可调用m m文件文件 称函数文件称函数文件 FunctionsFunctions4MATLAB SDU表3-1脚本文件与函数文件的区别脚本文件脚本文件函数文件函数文件输入、输入、输出输出没有
3、输入参数,不返回没有输入参数,不返回输出参数输出参数可以带输入参数也可返回可以带输入参数也可返回输出参数输出参数变量操变量操作作只操作基本工作空间变只操作基本工作空间变量量可操作基本工作空间变量可操作基本工作空间变量和局部变量和局部变量调用方调用方式式直接运行直接运行必须以函数调用方式必须以函数调用方式5MATLAB SDUReview:matlab的工作模式的工作模式指令驱动模式指令驱动模式 通常通常matlab以指令驱动模式工作,即在以指令驱动模式工作,即在matlab 窗口下当用户输入单行指令时,窗口下当用户输入单行指令时,matlab 立即处理这条指令,并显示结果,立即处理这条指令,并
4、显示结果,这就是这就是matlab命令行方式。命令行方式。命令行操作时,命令行操作时,matlab窗口只允许一次窗口只允许一次执行一行上的一个或几个语句。执行一行上的一个或几个语句。6MATLAB SDU例如:x1=0:10 x1=0 1 2 3 4 5 6 7 8 9 10 x2=0:3:11x2=0 3 6 9x3=11.5:-3:0 x3=11.5000 8.5000 5.5000 2.50007MATLAB SDUx1=0:10,x2=0:3:11,x3=11.5:-3:0 x1=0 1 2 3 4 5 6 7 8 9 10 x2=0 3 6 9x3=11.5000 8.5000 5.
5、5000 2.5000命令行方式程序可读性差,而且不能存储,命令行方式程序可读性差,而且不能存储,对于对于处理复杂问题和大量数据时是不方便的处理复杂问题和大量数据时是不方便的,应编写成能存储的程序文件。应编写成能存储的程序文件。8MATLAB SDUm文件模式文件模式将将matlab语句构成的程序存储成以语句构成的程序存储成以m为扩展为扩展名的文件,然后再执行该程序文件,这种工名的文件,然后再执行该程序文件,这种工作模式称为程序文件模式。作模式称为程序文件模式。程序文件不能在指令窗口下建立,因为指令程序文件不能在指令窗口下建立,因为指令窗口只允许一次执行一行上的一个或几个语窗口只允许一次执行一
6、行上的一个或几个语句句。9MATLAB SDUM 文件的创建和编辑文件的创建和编辑 不管是创建或编辑脚本文件还是函数文件,不管是创建或编辑脚本文件还是函数文件,可以使用各种文本编辑器:可以使用各种文本编辑器:例如Windows系统下的记事本,其它商业化软件UltraEdit,EditPlus等等,但是储存格式必须是但是储存格式必须是 ASCII 的格式,并且必的格式,并且必须以须以.m 为后缀名。为后缀名。通常情况下可以直接使用MATLAB中内置的M文件编辑器。10MATLAB SDU2.点击点击file Save Workspace As 将工作空间中的内容存入文件。*edit 用各种edi
7、t 编辑器编制m文件。edit 用matlab自带的编辑器编制m文件。word 用word编辑m文件。m文件编辑器的设定文件编辑器的设定 m文件编辑器可自己设定,设定方法是matlab命令窗口 options 菜单下点击 Edit Preference 选定m文件编辑器。11MATLAB SDUm文件编辑器缺省设置是文件编辑器缺省设置是 matlab editor还可设成:其他的还可设成:其他的Text Editor 从从“file”“preference”editor/debugger设置设置 注意:注意:所创建的所创建的m文件必须纳入文件必须纳入matlab搜索路搜索路 径后,才能在径后,
8、才能在matlab命令窗口运行。命令窗口运行。12MATLAB SDUmatlab搜索路径的设置 matlab 缺省路径是c:matlabbin.用pathtool路径浏览器设定当前目录 “file”-“set path”方法设定当前目录13MATLAB SDUmatlab文件的数据文件类型文件的数据文件类型mat数据文件数据文件.mat mat文件是文件是matlab以标准二进制格式保存以标准二进制格式保存的数据文件,可将工作空间中有用的数据变的数据文件,可将工作空间中有用的数据变量保存下来。量保存下来。mat文件的生成和调用是由函数文件的生成和调用是由函数save和和load完成的完成的。
9、14MATLAB SDUM文件结构文件结构良好习惯建议良好习惯建议1.程序尽量做到简单易懂;2.所有变量都用小写,并且含义清晰明了,如用year作为变量保存年份等;3.带有必要的注释,这样有助于他人和自己能快速知道程序执行的目的或者算法的含义,另外也可以有助于追溯记录程序的更新过程。15MATLAB SDU脚本(命令)文件(脚本(命令)文件(Script)命令文件命令文件 简单的简单的m文件文件 命令文件实际上是一串指令的集合,与在命令窗口逐行执行文件中命令文件实际上是一串指令的集合,与在命令窗口逐行执行文件中的所有指令,其结果是一样的。没有输入输出参数。的所有指令,其结果是一样的。没有输入输
10、出参数。“脚本脚本”本身反映这样一个事实:本身反映这样一个事实:MATLAB只是按文件只是按文件所写的指令执行。所写的指令执行。M脚本(命令)文件的构成较简单,其脚本(命令)文件的构成较简单,其特点特点是:是:它只是一串按用户意图排列而成的(包括控制流向指令在内的)它只是一串按用户意图排列而成的(包括控制流向指令在内的)MATLAB指令集。指令集。脚本文件运行后,所产生的所有变量都驻留在脚本文件运行后,所产生的所有变量都驻留在MATLAB基本工基本工作空间作空间(Base workspace)中。只要不使用中。只要不使用clear指令加以清除,指令加以清除,且且MATLAB指令窗不关闭,这些变
11、量将一直保存在基本工作空指令窗不关闭,这些变量将一直保存在基本工作空间中。基本工作空间随间中。基本工作空间随MATLAB的启动而产生;只有关闭的启动而产生;只有关闭MATLAB时,该基本空间才被删除。时,该基本空间才被删除。16MATLAB SDUM函数文件(函数文件(Function)与脚本(命令)文件不同,函数文件与脚本(命令)文件不同,函数文件(Function file)犹如一个犹如一个“黑箱黑箱”。从外界只能看到传给它。从外界只能看到传给它的输入量和送出来的计算结果,而内部运作是藏的输入量和送出来的计算结果,而内部运作是藏而不见的。而不见的。17MATLAB SDU函数文件的函数文件
12、的特点特点:从形式上看,与脚本文件不同,函数文件的第一行总是以从形式上看,与脚本文件不同,函数文件的第一行总是以“function”引导的引导的“函数申明行函数申明行”(Function declaration line)。该。该行还罗列出函数与外界联系的全部行还罗列出函数与外界联系的全部“标称标称”输入输出宗量。但对输入输出宗量。但对“输输入输出宗量入输出宗量”的标称数目并没有限制,即可以完全没有输入输出宗量,的标称数目并没有限制,即可以完全没有输入输出宗量,也可以是任意数目。也可以是任意数目。MATLAB允许使用比允许使用比“标称数目标称数目”较少的输入输出宗量,实现对函数较少的输入输出宗
13、量,实现对函数的调用。的调用。从运行上看,与脚本文件运行不同,每当函数文件运行,从运行上看,与脚本文件运行不同,每当函数文件运行,MATLAB就就会专门为它开辟一个临时工作空间,称之谓会专门为它开辟一个临时工作空间,称之谓函数工作空间函数工作空间(Function workspace)。所有中间变量都存放在函数工作空间中。当执行完文件。所有中间变量都存放在函数工作空间中。当执行完文件最后一条指令或遇到最后一条指令或遇到return时,就结束该函数文件的运行,同时该临时,就结束该函数文件的运行,同时该临时函数空间及其所有的中间变量就立即被清除。时函数空间及其所有的中间变量就立即被清除。函数空间随
14、具体函数空间随具体M函数文件的被调用而产生,随调用结束而删除。函函数文件的被调用而产生,随调用结束而删除。函数空间是数空间是相对独立的相对独立的、临时的临时的。在。在MATLAB整个运行期间,可以产生整个运行期间,可以产生任意多个临时函数空间。任意多个临时函数空间。假如在函数文件中,发生对某脚本文件的调用,那么该脚本文件运行假如在函数文件中,发生对某脚本文件的调用,那么该脚本文件运行产生的所有变量都存放于该函数空间之中,而不是存放在基本空间。产生的所有变量都存放于该函数空间之中,而不是存放在基本空间。18MATLAB SDU函数函数m文件的格式:文件的格式:function 返回变量返回变量=
15、函数名(输入变量)函数名(输入变量)注释说明语句段注释说明语句段 程序语句段程序语句段特定规则:特定规则:1.函数函数m文件第一行必须以单词文件第一行必须以单词function作为引作为引导词,必须遵循如下形式:导词,必须遵循如下形式:function=()2.m文件的文件名必须是文件的文件名必须是.m。3.程序中的变量均为局部变量,不保存在工作程序中的变量均为局部变量,不保存在工作空间中。其变量只在函数运行期间有效。空间中。其变量只在函数运行期间有效。19MATLAB SDUM函数文件示例function sa=circle(r,s)%CIRCLEplot a circle of radii
16、 r in the line specified by s.%r指定半径的数值指定半径的数值%s指定线色的字符串指定线色的字符串%sa圆面积圆面积%circle(r)利用蓝实线画半径为利用蓝实线画半径为 r 的圆周线的圆周线.%circle(r,s)利用串利用串 s 指定的线色画半径为指定的线色画半径为 r 的圆周线的圆周线.%sa=circle(r)计算圆面积,并画半径为计算圆面积,并画半径为 r 的蓝色圆面的蓝色圆面.%sa=circle(r,s)计算圆面积,并画半径为计算圆面积,并画半径为 r 的的 s 色圆面色圆面.%编写于编写于2001年年4月月7日,修改于日,修改于2002年年8月
17、月27日。日。if nargin2 error(输入宗量太多。输入宗量太多。);end;if nargin=1 s=b;end;20MATLAB SDU函数申明(定义)行函数申明(定义)行(Function declaration line):位于函数文件的首行,以位于函数文件的首行,以MATLAB关键字关键字function开头,函数名以及函数的输入输出宗开头,函数名以及函数的输入输出宗量都在这一行定义。量都在这一行定义。21MATLAB SDUH1行行(The first help text line):紧随函数申明行之后以紧随函数申明行之后以%开头的第一注释行。开头的第一注释行。按按MA
18、TLAB自身文件的规则,自身文件的规则,H1行包含:大行包含:大写体的函数文件名;运用关键词简要描述的函写体的函数文件名;运用关键词简要描述的函数功能。该数功能。该H1行供行供lookfor关键词查询和关键词查询和help在线帮助使用。在线帮助使用。22MATLAB SDU在线帮助文本在线帮助文本(Help text)区区:H1行及其之后的连续以行及其之后的连续以%开头的所有注释行开头的所有注释行构成整个在线帮助文本。它通常包括:函数输构成整个在线帮助文本。它通常包括:函数输入输出宗量的含义,调用格式说明。入输出宗量的含义,调用格式说明。23MATLAB SDU编写和修改记录编写和修改记录:与
19、在线帮助文本区相隔一个空行,也以与在线帮助文本区相隔一个空行,也以%开头,开头,标志编写及修改该标志编写及修改该M文件的作者和日期、版本文件的作者和日期、版本记录。它用于软件档案管理。记录。它用于软件档案管理。24MATLAB SDU函数体函数体(Function body):为清晰起见,它与前面的注释行以空行相隔。为清晰起见,它与前面的注释行以空行相隔。这部分内容由实现该这部分内容由实现该M函数文件功能的函数文件功能的MATLAB指令组成。它接收输入宗量,进行指令组成。它接收输入宗量,进行程序流控制,得到输出宗量。其中为阅读、理程序流控制,得到输出宗量。其中为阅读、理解方便,也配置适当的空行
20、和注释。若仅从运解方便,也配置适当的空行和注释。若仅从运算角度看,惟有函数申明行和函数体两部分是算角度看,惟有函数申明行和函数体两部分是构成构成M函数文件所必不可少的。函数文件所必不可少的。25MATLAB SDUfunction r=rank(A,tol)%RANK Matrix rank.%RANK(A)provides an estimate of the number of linearly%independent rows or columns of a matrix A.%RANK(A,tol)is the number of singular values of A%that a
21、re larger than tol.%RANK(A)uses the default tol=max(size(A)*norm(A)*eps.%Class support for input A:%float:double,single%Copyright 1984-2004 The MathWorks,Inc.%$Revision:5.11.4.2$Date:2004/04/10 23:30:08$s=svd(A);if nargin=1 tol=max(size(A)*eps(max(s);endr=sum(s tol);.程序部分26MATLAB SDUmatlab内置函数文件内置函数
22、文件 matlab自定义的函数文件称内置函数文件自定义的函数文件称内置函数文件 调用内置函数的方法:使用函数名并给出相应的入调用内置函数的方法:使用函数名并给出相应的入口、出口参数即可。口、出口参数即可。例如:sin.m函数 调用格式:y=sin(2*x)实际应用中:x=0:2*pi/180:2*pi;y=sin(2*x)plot(x,y)M 函数文件分两类:内置和自定义函数文件分两类:内置和自定义27MATLAB SDU又如又如 sqrt(x)求求x的平方根的平方根 abs(x)求求x的绝对值的绝对值 det(a)求行列式的值求行列式的值 等等。等等。matlab拥有大量的内置数学函数,供我
23、们在拥有大量的内置数学函数,供我们在数值运算和符号运算中调用。数值运算和符号运算中调用。28MATLAB SDUII 函数函数m文件文件 需要输入变量,返回输出变量需要输入变量,返回输出变量 matlab用户可以根据需要编辑自己的m文件,它们可以像库函数一样方便的调用,从而极大地扩展了matlab 的能力。对于某一类特殊问题,如创建了许多m函数文件,则可形成新的工具箱。这种用matlab语言创建定义新的matlab函数的功能,正体现了matlab语言强大的扩展功能。29MATLAB SDUM文件命名以及调用对于脚本文件脚本文件的命名,规则和变量的命名规则一致,即必须以字母开头,其余部分可以是字
24、母、数字和下划线的任意组合。调用脚本文件时只需要在MATLAB的主窗口输入脚本文件的名字(不带后缀),脚本文件内的内容就会得到执行。30MATLAB SDU函数文件命名与调用函数文件命名与调用函数文件的命名规则除了和变量的命名规则函数文件的命名规则除了和变量的命名规则一致以往,另外惯用的规则是函数文件名一致以往,另外惯用的规则是函数文件名和函数名相一致。和函数名相一致。调用方式调用方式 out1,out2,.,outN=functionname(in1,in2.inN)输出方括号,输入小括号输出方括号,输入小括号31MATLAB SDU例例利用函数文件,实现直角坐标利用函数文件,实现直角坐标(
25、x,y)与与极坐标极坐标(,)之间的转换之间的转换函数文件函数文件tran.m:function rho,theta=tran(x,y)rho=sqrt(x*x+y*y);theta=atan(y/x);调用调用tran.m的命令文件的命令文件main1.m:x=input(Please input x=:);y=input(Please input y=:);rho,the=tran(x,y);rho the32MATLAB SDU补充:函数的充:函数的递归调用用递归调用:函数调用其本身称为函数的递归调用例如求n!阶乘本身是用递归形式进行定义的:因此定义阶乘函数文件可以采用递归调用33MAT
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB_4 第三 章程 设计 初步
限制150内