找回密码
 注册
关于网站域名变更的通知
查看: 405|回复: 1
打印 上一主题 下一主题

Matlab中函数句柄@的作用分享

[复制链接]
  • TA的每日心情
    开心
    2019-11-20 15:00
  • 签到天数: 2 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
    发表于 2020-6-29 13:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x

    Matlab中函数句柄@的作用分享

    ) Y3 N1 n) G! m2 N5 I0 t* x" S

    问:f=@(x)acos(x)表示什么意思?其中@代表什么?
    & B7 p$ Q/ ^6 I# L# j答:表示f为函数句柄,@是定义句柄的运算符。f=@(x)acos(x) 相当于建立了一个函数文件:
    # d2 {3 |) p" j1 T2 z% f.m
    2 P3 J3 K8 o1 P5 S  P9 m! mfunction  y=f(x)
    . B% @' r! ?+ `$ F! F+ D2 E& dy=acos(x);

    若有下列语句:xsqual=@(x)1/2.*(x==-1/2)+1.*(x>-1/28&x<1/2)+1.2.*(x==-1/2);

    则相当于建立了一个函数文件:

    % xsqual.m

    function y=xsqual(x)

    y=1/2.*(x==-1/2)+1.*(x>-1/28&x<1/2)+1.2.*(x==-1/2);

    详细说明:

    1、函数句柄/function_handle(@):是一种间接调用函数的方式。, T) g$ c3 M, a% F- x
    2、语法:handle=@functionname  or handle=@(arglist)anonymous_function! a. R: i8 O" v- r
    3、描述:函数句柄(function handle)是一种能够提供函数间接调用的matlab value。你可以通过传递句柄来调用各种其他功能。你也可以将句柄存储到数据结构中备用(例如Handle Graphic 回调)。句柄是matlab的标准数据类型之一。
    + R3 T6 f% P. W+ d; {      当创建句柄时,你所指定的函数必须在matlab搜索路径之中,并且必须在创建语句的scope之中。例如,只要在定义子函数的文件之中,你句可以为这个子函数创建句柄。这些条件不适用于evaluate函数句柄。例如,你可以在一个单独(out-scope)通过句柄执行一个子函数,这要求句柄是在in-scope创建的。' P5 n0 _  L8 P1 z1 K$ m4 r
           handle=@(arglist)anonymous_function用来创建匿名函数(anonymous function)并返回该匿名函数的句柄。括号右边的函数体是单个的matlab语句(statement)或者matlab命令。arglist是一个用逗号“,”分隔的输入变量列表。该函数通过句柄handle执行。2 a7 t6 @8 C; y7 w! n! L8 n- s
    备注:函数句柄是标准的matlab数据类型。因此,你可以像matlab其他数据类型一样进行操作。

    4、函数句柄的好处
    1 `3 a9 [3 H& V* J9 k       ①提高运行速度。因为matlab对函数的调用每次都是要搜索所有的路径,从set path中我们可以看到,路径是非常的多的,所以如果一个函数在你的程序中需要经常用到的话,使用函数句柄,对你的速度会有提高的。
      d% Q! p3 _. D( j: h" m! l       ②使用可以与变量一样方便。比如说,我再这个目录运行后,创建了本目录的一个函数句柄,当我转到其他的目录下的时候,创建的函数句柄还是可以直接调用的,而不需要把那个函数文件拷贝过来。因为你创建的function handles中,已经包含了路径。

    0 b* ~$ D/ e1 f& R2 k

    该用户从未签到

    2#
    发表于 2020-6-29 14:30 | 只看该作者
    看看Matlab中函数句柄@的作用都有哪些,谢谢楼主分享。
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-6-28 11:46 , Processed in 0.078125 second(s), 23 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表