函数句柄和匿名函数

函数句柄和匿名函数

ID:41956817

大小:60.55 KB

页数:6页

时间:2019-09-05

函数句柄和匿名函数_第1页
函数句柄和匿名函数_第2页
函数句柄和匿名函数_第3页
函数句柄和匿名函数_第4页
函数句柄和匿名函数_第5页
资源描述:

《函数句柄和匿名函数》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、下面代码创建一个内联函数i1_humps:»订_humps=inline('1./((x・3).A2+0.01)+1./((x・.9).A2+0.04)・6Tx‘)i1_humps=Inlinefunction:i1_humps(x)=1./((x-3).A2+0.01)+1./((x-.9).A2+0.04)-6上例中,函数inline从一个字符串创建一个函数,并以x为输入变量。要在一个函数屮调用内联函数,只要将该内联函数的名字作为输入参数传递给函数即可。例如,耍将quad(Fun,low,h

2、igh)中的Fun换为上面的内联韩式i1_humps,只要按下面的方式调用即叭quad(i1_humps,low,high)o要验证一个山字符串表示的函数或一个内联函数,可以使用feval函数。下而的代码验证了正弦函数和前面创建的i1_humps函数»y=fevalCsin',pi*(0:4)/4)y=00.70711.00000.70710.0000»z=feval(i1_humps,[1-01])-5.13785.176516除了字符串函数和内联函数外,还山一种函数类型:匿名函数,并用函数句

3、柄表示它。在应用中并不鼓励用户使用前两种方法,而是耍尽量使用匿名韩式句柄来引用函数。卜•面代码给出了一个匿名函数的例了:af_humps=@(x)1./((x-3).A2+0.01)+1./((x-.9).A2+0.04)-6;其中,@符号意味这等号左边是一个函数句柄。@后面的(x)定义了函数的输入参数,最后一部分是函数表达式。我们同样可以利用feval函数來验证匿名函数,例如,可以使用下而代码验证af_humps:»z=feval(af_humps,[-101])-5.13785.176516

4、.0000其实,用八根本没有必要利用feval函数來验证匿名函数,因为匿名函数可以使用自己的函数句柄直接进行验证,例如,上面的例子可以简写为:»z=af_humps([-101])-5.13785.176516.0000匿名函数在定义过程中口J以调用任何Matlab函数(包括用户自定义的函数),也口J以使用当时MatlabI作区屮存在的任何变量。例如,下例屮的匿名函数af_humpsab在定义时就是用了Matlab工作区中的变量a和b:»a=-.3;b=-.9;»af_humpsab=@(x)1

5、./((x+a).A2+0.01)+1./((x+b).A2+0.04)-6;»af_humpsab([-101])ans=-5.13785.176516.0000我们看到:af_humpsab在定义时引用了签名定义的变量a和b°应当注意,当a或b的值变化吋,匿名函数并不改变,这是因为函数句柄值捕捉它创建时刻的变虽的值,并不随变量的变化而变化。»a=0;%changingthevalueofadoesnotchangthefunction.»af_humpsab([-101])%evaluate

6、again,getthesameresultsans=-5.13785.176516.0000我们也可以针对一个内置函数或一个M文件函数创建匿名函数旬柄。下面函数分别给予M文件两数humps和Matlab内置两数cos创建了两个文件句柄:»fh_Mfile=@humps%functionhandleforM-filefunctionfh_Mfile=@humps»fh_Mfile(1)%evaluatehumps(1)ans=16»fh_builtin=@cosfh_builtin=@cos»f

7、h_builtin(pi)ans=-1由上面可知,要创建一个内置函数或一个M文件函数的句柄也很容易,只要在等号右边使川@符号,并在该符号后紧跟内置函数名或M文件函数名即可。我们述可以利用单元数组同时创建多个内置函数和M文件函数的句柄,验证这些函数时,只要引用该函数所在单元即可。例如,下面的代码将上面两个独立独立创建的句柄利用一个单元数组than创建在一起:»than={@humps@cos}than=@humps@cos»fhan{1}(1)%evaluatehumps(1)ans=16»fha

8、n{2}(pi)%evaluatecos(pi)ans=-1Matlab还&门提供了一些函数来处理和应用句柄。例如,函数functions将返冋一个句柄的详细信息,如下例所示:»functions(fh_Mfile)ans=function:'humps1type:'simple'file:‘D:anzhuangnjanjianMATLABR2008atoolboxmatlabdemoshumps.rrr»functions(fh_builtin)ans=function:"cos

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。