第八章程序设计.ppt
《第八章程序设计.ppt》由会员分享,可在线阅读,更多相关《第八章程序设计.ppt(47页珍藏版)》请在课桌文档上搜索。
1、第八章 M文件程序设计基础,M文本编辑器M文件MATLAB的数据类型MATLAB控制流程序调试函数句柄,一、M文件,M脚本(命令)文件M函数文件局部变量和全局变量M文件的一般结构变量的检测传递和限权使用函数,1、M脚本(命令)文件(Script),“脚本”本身反映这样一个事实:MATLAB只是按文件所写的指令执行。M脚本(命令)文件的构成较简单,其特点是:它只是一串按用户意图排列而成的(包括控制流向指令在内的)MATLAB指令集。脚本文件运行后,所产生的所有变量都驻留在MATLAB基本工作空间(Base workspace)中。只要不使用clear指令加以清除,且MATLAB指令窗不关闭,这些
2、变量将一直保存在基本工作空间中。基本工作空间随MATLAB的启动而产生;只有关闭MATLAB时,该基本空间才被删除。,2、M函数文件(Function),与脚本(命令)文件不同,函数文件(Function file)犹如一个“黑箱”。从外界只能看到传给它的输入量和送出来的计算结果,而内部运作是藏而不见的。,函数文件的特点:,从形式上看,与脚本文件不同,函数文件的第一行总是以“function”引导的“函数申明行”(Function declaration line)。该行还罗列出函数与外界联系的全部“标称”输入输出宗量。但对“输入输出宗量”的标称数目并没有限制,即可以完全没有输入输出宗量,也可
3、以是任意数目。MATLAB允许使用比“标称数目”较少的输入输出宗量,实现对函数的调用。从运行上看,与脚本文件运行不同,每当函数文件运行,MATLAB就会专门为它开辟一个临时工作空间,称之谓函数工作空间(Function workspace)。所有中间变量都存放在函数工作空间中。当执行完文件最后一条指令或遇到return时,就结束该函数文件的运行,同时该临时函数空间及其所有的中间变量就立即被清除。函数空间随具体M函数文件的被调用而产生,随调用结束而删除。函数空间是相对独立的、临时的。在MATLAB整个运行期间,可以产生任意多个临时函数空间。假如在函数文件中,发生对某脚本文件的调用,那么该脚本文件
4、运行产生的所有变量都存放于该函数空间之中,而不是存放在基本空间。,3、局部变量和全局变量,局部(Local)变量它存在于函数空间内部的中间变量,产生于该函数的运行过程中,其影响范围也仅限于该函数本身。全局(Global)变量通过global指令,MATLAB也允许几个不同的函数空间以及基本空间共享一个变量。这种被共享的变量称为全局变量。每个希望共享全局变量的函数或MATLAB基本工作空间,必须逐个用global对具体变量加以专门定义。没采用global定义的函数或基本空间,将无权享用全局变量。如果某个函数的运作使全局变量的内容发生了变化,那么其他函数空间以及基本工作空间中的同名变量也就随之变化
5、。除非与全局变量联系的所有工作空间都被删除,否则全局变量依然存在。例,4、M文件的一般结构,由于从结构上看,脚本文件只是比函数文件少一个“函数申明行”。典型M函数文件的结构:函数申明(定义)行(Function declaration line):H1行(The first help text line):在线帮助文本(Help text)区:编写和修改记录:函数体(Function body):M函数文件示例,函数申明(定义)行(Function declaration line):,位于函数文件的首行,以MATLAB关键字function开头,函数名以及函数的输入输出宗量都在这一行定义。,
6、H1行(The first help text line):,紧随函数申明行之后以%开头的第一注释行。按MATLAB自身文件的规则,H1行包含:大写体的函数文件名;运用关键词简要描述的函数功能。该H1行供lookfor关键词查询和help在线帮助使用。,在线帮助文本(Help text)区:,H1行及其之后的连续以%开头的所有注释行构成整个在线帮助文本。它通常包括:函数输入输出宗量的含义,调用格式说明。,编写和修改记录:,与在线帮助文本区相隔一个空行,也以%开头,标志编写及修改该M文件的作者和日期、版本记录。它用于软件档案管理。,函数体(Function body):,为清晰起见,它与前面的注
7、释行以空行相隔。这部分内容由实现该M函数文件功能的MATLAB指令组成。它接收输入宗量,进行程序流控制,得到输出宗量。其中为阅读、理解方便,也配置适当的空行和注释。若仅从运算角度看,惟有函数申明行和函数体两部分是构成M函数文件所必不可少的。,5、变量的检测传递和限权使用函数,输入输出宗量检测指令跨空间变量传递子函数和私用函数,输入输出宗量检测指令,nargin在函数体内,用于获取实际输入宗量nargout在函数体内,用于获取实际输出宗量nargin(fun)获取fun指定函数的标称输入宗量数nargout(fun)获取fun指定函数的标称输出宗量数inputname(n)在函数体内使用,给出第
8、n个输入宗量的实际调用变量名,跨空间变量传递,跨空间计算串表达式的值跨空间赋值,跨空间计算串表达式的值,前面已介绍了实现不同工作空间之间变量传递的两种渠道:函数的输入输出宗量和全局变量。下面介绍第三个传递渠道:跨空间计算串表达式值的指令。evalin(workspace,expression)跨空间计算串表达式值说明:workspace可取两个值:base和caller该调用格式的执行机理:当workspace取base表示计算eval(expression)时,将从基本工作空间获得变量值。当workspace取caller表示计算eval(expression)时,将从主调函数工作空间获得变
9、量值。主调函数是相对被调函数而言的。这里,被调函数是指evalin所在的函数。,evalin(workspace,expression1,expression2)跨空间计算替代串表达式值说明:workspace可取两个值:base和caller该调用格式的执行机理:先从所在函数空间获得变量值用eval(expression1)计算原串表达式;若该计算失败,则在从workspace 指定的(基本或主调函数)工作空间获取变量值,再通过eval(expression2)计算替代串表达式。例:evalin运行机理与eval的异同。,跨空间赋值,实现不同工作空间之间变量传递的第四个传递渠道是跨空间赋值指
10、令:assignin(workspace,VN,x)跨空间向VN变量赋值说明:把当前工作空间内变量x的值赋给workspace指定空间名的VN变量。例:assignin运作机理示范,子函数和私用(局部)函数,子函数私用(局部)函数,子函数,MATLAB允许一个M函数文件包含多个函数的代码。其中,第一个出现的函数称为主函数(Primary function),该文件中的其他函数称为子函数(Subfunction)。保存时所用的函数名与主函数定义名相同。外部程序只能对主函数进行调用。子函数的性质:,子函数的性质:,每个子函数的第一行是其自己的函数申明行。在M函数文件内,主函数的位置不可改变,但子函
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第八 章程 设计

链接地址:https://www.desk33.com/p-259714.html