matlab-函数句柄.ppt

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
函数句柄;主要内容;一.函数类型介绍;子函数 一个m文件中可能包含多个函数。主函数之外的函数都称为子函数这些子函数只能为主函数或同一m文件中的其它子函数可见。 而即便在相同m文件中,子函数内定义的变量也不可为其它子函数所使用除非定义为全局或作为参数传递。 ;举例(求2*X^2+3*X-7=0的根); 嵌套函数 任一m函数体内所定义的函数称为外部函数的嵌套函数。matlab支持多重嵌套函数 即在嵌套函数内部继续定义下一层的嵌套函数。;例:; Matlab函数体通常不需end结束标记,但如包含嵌套函数,则该m文件内的所有函数(主函数和子函数)不论是否包含嵌套函数都需显式end标记。 嵌套函数的调用规则1.父级函数可调用下一层嵌套函数。2.相同父级的同级嵌套函数可相互调用。3.处于低层的嵌套函数可调用任意父级函数。 ;私有函数 私有函数仅对满足条件的特定函数开放。私有函数存放于名为private的子目录下,访问条件是存放于该private子目录的上一层父目录中的m文件函数 从存放于该private子目录上一层父目录中的m文件函数中发起调用的m脚本。 ; 内联函数(inline)函数是MATLAB 7以前经常使用的一种构造函数对象的方法。在命令窗口、程序或函数中创建局部函数时,通过使用inline构造函数而不用将其储存为一个M文件,同时又可以像使用一般函数那样调用它。 MATLAB中的内联函数借鉴了C语言中的内联函数,现在应用较少。 ;匿名函数 匿名函数(anonymous function)是MATLAB 7.0版提出的一种全新的函数描述形式和内联函数类似可以让用户编写简单的函数而不需要创建M文件。 相当于C语言中的函数指针(入口地址)只不过句柄就用一个唯一的常整数来指出 。匿名函数是函数句柄的一种特殊用法这里所得到的函数句柄变量不指向特定的函数即不指向函数M文件中的函数名而是指向一个函数表达式(具体表达式)。 ; 定义一个匿名函数很简单语法是fhandle=@(arglist) expression 变量名=@(输入参数列表)运算表达式 其中fhandle就是调用该函数的函数句柄(function handle)相当于C语言中的函数指针arglist是参数列表,多个参数使用逗号分隔,Expression则是该函数的表达式,从这里我们引入函数句柄。 ;为了说明问题,我们用简单的两个数相加,  sum=@(x,y)x+y sum = @(x,y)x+y sum(2,3) ans = 5 ;句柄定义:matlab中,每一个对象都有一个数字来标示,叫做句柄。(可以理解为一个人的名字,这样在调用时可以调用函数句柄而不用调用该函数);方便地实现函数间互相调用 兼容函数加载的所有方式 拓宽子函数包括局部函数的使用范围 提高函数调用的可靠性 减少程序设计中的冗余 提高重复执行的效率 数组、结构数组、细胞型数组结合定义数据 ; 函数句柄的一个重要的特性是将它们可以用来标识子函数、私有函数和嵌套函数。一般情况下,这些函数对于用户来说都是“隐蔽”的,这些标识对于用户正确使用这些函数非常有用。例如,当我们在编写一个含有子函数的M文件时,可以为子函数创建一个句柄,并作为主函数的一个输出参数提供给用户,这样就是本来“隐蔽”的子函数“显现”出来,以便于用户对其进行验证和使用。;函数句柄的创建和显示 定义函数句柄的定义只需在提示符@后添加相应函数的函数名 f_h=@plot f_h = @plot 函数句柄的内容通过functions显示 functions(f_h) ans = function: plot type: ‘simple file: MATLAB built-in function ;函数句柄的调用和操作 可通过函数feval进行函数句柄的调用 feval(函数句柄)(间接调用格式) f_h1=@peaks%peaks函数,可产生一个凹凸有致的曲面 feval(f_h1) feval(函数句柄,参数列表) f_h=@plot feval(f_h,0:10,0:10) ; sum=@(x,y)x.^2+y.^2 sum = @(x,y)x.^2+y.^2 sum(2,3) ans = 5 直接调用格式

文档评论(0)

baobei + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档