购买

¥ 20.0

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

上传资料

关闭

关闭

关闭

封号提示

内容

首页 第六章M文件和函数句柄

第六章M文件和函数句柄.ppt

第六章M文件和函数句柄

xiaowu0912
2019-05-29 0人阅读 举报 0 0 暂无简介

简介:本文档为《第六章M文件和函数句柄ppt》,可适用于职业教育领域

第六章M文件和函数句柄为什么要引入M文件?复杂的问题需要较复杂的MATLAB程序进行解算。如求的次方的累加。通用的程序不能也不必每次都写应该有一段程序表达这个通用的算法称为函数。sum,abs,filter,fourier,plothellip前言关于M文件的说明:这种MATLAB程序由较多的指令和多种表达式组成并按一定的执行次序运行。这种程序的扩展名为m称为脚本M文件或函数M文件。MATLAB控制流ifelseend条件控制expr作为控制其下分支的条件表达式通常是关系、逻辑运算构成的表达式该表达式的结果是ldquo标量逻辑值或rdquo。expr也可以是一般代数表达式任何非零值的作用等同于ldquo逻辑rdquo。ifexpr(commands)else(commands)endifexpr(commands)elseifexpr(commands)hellipelse(commands)endifexpr(commands)endexpr可以是数组之间的关系、逻辑运算。只有逻辑数组全为时该expr控制的分支才能执行。当expr为数值数组时只有当该数组不包含任何零元素时expr控制的分支才能执行。如果expr为空数组MATLAB认为条件为假(false)则该expr控制的分支不被执行。例和C不同地方:expr处括号不是必须的end作为if控制的结束符没有使用{}处在if和end之间的语句都算作if范围内的语句。ifexpr(commands)endifexprelseifexprelseendend如果拆开elseif则代表嵌套结构switchexprcasevalue(commands)casevalue(commands)casevaluek(commandsk)otherwise(commands)endexpr只能是标量数值或标量字符串。expr不需要括号value可以是标量数值或字符串也可以是胞元数组(p)此时expr的值和胞元数组中所有值比较只要有一个相等则认为条件为真例switchcase条件控制同C语言区别:expr没有括号value后不用ldquo:rdquo都不命中的缺省语句为otherwise而不是defaultforix=array(commands)endix为循环变量ix=a:b:c循环起点a终点c每次循环增量b类似于for(i=ii=ib)对于以为步长的可以直接写成ix=a:b同样使用end作为结束符。例for循环和while循环whileexpr(commands)endexpr为条件表达式expr的值同if的条件表达式。如果使用逻辑数组、数值数组等只有其中没有零值时while循环才能执行因此用在while循环中需慎重。while先检测条件成立然后执行语句然后再检测。不使用dohellipwhile结构。V=input(lsquomessagersquo)V=input(lsquomessagersquo,rsquosrsquo)该指令执行时控制权交给键盘待输入结束后按下Enter键后控制权交给Matlab执行。Message是提示字符串可键入数值、字符串第二种格式总是以字符串形式接收。类似于C语言中getch()、scanf()。break跳出循环体或条件判断。continue在循环体中跳出当前迭代直接进入下一次迭代。控制程序流的其他常用指令例keyboard遇到keyboard时暂停程序执行将控制权交给键盘转入到commandwindow下以开始接收用户从键盘输入的各种MATLAB命令,并返回结果。只有当用户输入return后控制权才交还给程序回到原来中断处继续往下执行。一般用在调试中!return结束当前语句所在的程序的执行将控制权转至调用函数或指令窗。可以用来结束函数脚本执行。脚本文件和函数文件M脚本文件M脚本文件是一串按用户意图排列而成的MATLAB指令(如命令函数调用、数组操作、控制指令)的组合如同命令行方式分步键入的命令执行效果相同生成的变量都在workspace中和命令行方式不同的是这些脚本并不在历史命令窗中出现。M函数文件函数文件供别的程序调用完成某种功能有输入和输出结果内部运算一般不公开有自己的独立运行空间函数用到的中间变量也不在workspace中保存。注意:编写完函数文件后不能直接点击run执行。因为执行函数需要调用参数而直接点击不能传参数一般通过脚本、命令行或别的函数间接调用。从形式上看函数文件的首行总是以function开头的函数申明行。函数名以及函数的输入输出量都在这一行被定义。输入输出量的数目没有限制也可以完全没有输入输出比如函数中绘图。MATLAB允许使用比标称(申明)数目少的输入输出量即部分函数有默认值可调用时参数数目可以少于申明变量个数如max(a)和max(a,,)都可以调用。M函数文件的特点:从运行上看每当函数文件运行MATLAB就会专门为它开辟一个临时工作空间该空间被称之为函数工作空间。所在中间变量都存放在函数工作空间中。当执行完文件最后一条指令或遇到return指令结束该函数文件的运行同时临时函数空间及所有中间变量立即被清除。函数空间随具体M函数文件的被调用而产生随调用结束而删除。函数空间相对基本空间是独立的、临时的。在MATLAB整个运行期间可以产生任意多个临时函数空间。()局部变量存在于函数空间内部的中间变量产生于该函数的运行过程中影响范围仅限于函数本身。()全局变量几个不同函数空间及基本空间共享一个变量被共享的变量称为全局变量。每个共享全局变量的函数或基本空间必须都用global对变量加以定义。若某个函数的运作使全局变量的内容发生了变化则其他函数空间以及基本工作空间的同名变量也随之变化。除非与全局变量联系的所有工作空间都被删除全局变量依然存在。局部变量和全局变量几点说明:()对全局变量的定义必须在该变量被使用之前进行。建议把全局变量的定义放在函数体的首行位置。()建议选用大写字符命名全局变量。()不提倡使用全局变量。M函数文件的一般结构函数申明行(位于函数文件首行必不可少)functionx,y=funname(a,b,c)以关键字function开头function之前除了注释外不能有其他语句。函数名以及函数的输入输出量名都在这一行被定义。输入参数可为数组、矩阵、逻辑数组等所有数据类型用逗号隔开输出也可以是各种数据类型的组合用逗号隔开。用ldquo=rdquo表示返回值。H行紧随函数申明行之后以开头的第一注释行。按MATLAB自身文件规则H行包含函数文件名和运用关键词简要描述的函数功能。该H行供lookfor关键词查询和help在线帮助使用。在线帮助文本区H行及之后的连续的以开头的所有注释行构成整个在线帮助文本。它通常包括:函数输入输出量的含义调用格式说明。编写和修改记录几何位置与在线帮助文本区相隔一个空行。该区域文本内容也都以开头写出编写及修改该M函数文件的作者和日期、版本记录。在线帮助文本区、编写和修改记录不是必要的如果没有则help指令返回为空。函数体(必不可少)函数体由实现该M函数文件功能的MATLAB指令组成接受输入量进行流程控制创建输出量。为清晰起见与前面的注释行以空行相隔。注意:函数没有一个明显的结尾除非遇到后续子函数否则语句的结束就是函数的结束没有}和end这样的对称标记。即使返回变量x,y被赋值也不表明函数执行到此返回。如果要结束函数可用return提前中止指令。exampleFunctionX,Y=exm(n,r)EXMAnexampleoffunctionthisfunctioniswanttotellyouhowtocreateanfunc!CityhunterswitchncaseX=hellipY=hellipendr=r无明显结尾创建日期及作者H函数定义函数总结:(以FunctionX,Y=exm(n,r)为例)Function必须是首先开头的字符串表明这是一个外部可见的函数如果没有返回值可以直接写成Functionexm(n,r,str)。也可以没有输入参数如FunctionX,Y=exm可以没有H及其他头部注释行不影响程序执行。函数没有明显的结束标志碰到子函数、return语句后返回。此类文件保存时文件名一般是函数名一般不要去修改它避免可能出现的麻烦。例主函数与子函数一个函数文件可以包含一个主函数和若干个子函数文件中第一个function定义的函数就是主函数它可以被命令窗、其他函数调用可以在当前目录、搜索路径上被找到可以用helpfunctionname列出其帮助信息。例子函数只能和主函数在同一个文件中是在主函数之后的函数只能被主函数或同一文件中其他子函数调用不能被外部调用。子函数之间定义位置先后与调用顺序无关。一个M函数文件可以有多个子函数。同一文件中主函数子函数的工作空间都是彼此独立的依靠输入输出变量传递或者全局变量传递。MATLAB的函数类别匿名函数(Anonymousfunction)()在指令窗或任何M文件中创建匿名函数FH=(arglist)exprFH:所创建匿名函数的句柄arglist输入量列表expr由输入量构成的函数表达式。()匿名函数的调用格式FH(arglist)直接调用格式feval(FH,arglist)间接调用格式函数句柄(Functionhandle)是MATLAB版启用的新数据类型。它保存着ldquo为该函数创建句柄时的路径、视野、函数名以及可能存在的重载方法rdquo。函数句柄函数句柄的创建和观察函数句柄并不伴随函数文件的被创建、调用而自动形成是必须通过专门的定义才会生成的。为一个函数定义句柄的方法有两种:利用符号利用转换函数strfunc。对函数句柄的内涵观察需借助专门指令Functions实现。例函数句柄的基本用法如何通过函数句柄执行相应函数的计算?假设一个函数的调用格式为:argout,argout,hellip,argoutn=FunName(argin,argin,helliparginn)且该函数的句柄通过以下指令获得:Hfun=FunName则通过函数句柄实现函数运算的调用格式是:argout,argout,hellip,argoutn=feval(Hfun,argin,argin,helliparginn)argout,argout,hellip,argoutn=Hfun(argin,argin,helliparginn)例

VIP尊享8折文档

用户评价(0)

关闭

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

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

提示

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

文档小程序码

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

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/32

第六章M文件和函数句柄

¥20.0

会员价¥16.0

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利