• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Matlab中的函数句柄@ - 疯子123

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

Matlab中的函数句柄@


本系列文章由 @yhl_leo 出品,转载请注明出处。
文章链接: http://blog.csdn.net/yhl_leo/article/details/50699990


@是Matlab中的句柄函数的标志符,即间接的函数调用方法。

1 句柄函数

主要有两种语法:

  • handle = @functionname
  • handle = @(arglist)anonymous_function

handle = @functionname:返回一个特别的Matlab函数句柄,它提供了一种间接访问函数的方式,也被成为函数的函数(function functions),是一种标准的Matlab数据类型。在C/C++中,有个类似的用法称为引用(使用标识符&),引用只是它绑定的对象的另一个名字,作用在应用上的所有操作事实上都会作用在该引用绑定的对象上。Matlab里句柄函数,与前面讲得引用有些类似,我们通过语句handle = @functionname给名为functionname的函数取了个别名handle,也就是说你既可以用函数functionname实现你要实现的功能,也可以使用handle实现同样的功能。在Python里,你大可直接用变量赋值的方式handle = functionname达到这一目的。

基本用法如下:

% .m 文件函数句柄
>>fh_mFile = @humps
fh_mFile = 
    @humps

% 内置函数句柄
>>fh_builtin = @cos
fh_builtin = 
    @cos
>>fh_builtin(pi)
ans =
    -1

handle = @(arglist)anonymous_function:也称为匿名函数,@左边为一个函数句柄,@后定义了匿名函数的输入参数(多个参数用逗号分隔开),最后一部分为匿名函数的表达式。基本用法如下:

>>sqr = @(x) x.^2
>>a = sqr([1, 2, 3])
a =
     1     4     9

2 句柄处理函数

这里列举四个常见的句柄处理函数,如下表:

函数 说明
functions 返回一个句柄的详细信息
str2func 将一个函数名作为字符串传递给此函数,创建该函数的函数句柄
func2str 从一个函数句柄中提取函数名,对于内置函数或m文件函数句柄,返回函数的名称,对于匿名函数,返回其表达式
structfun 将句柄结构体数组的每一个句柄函数的依次作用于数组,返回每个句柄函数的作用于数组的值


逐一给出示例:

>> functions(sqr)
ans = 
     function: \'@(x)x.^2\'
         type: \'anonymous\'
         file: \'\'
    workspace: {[1x1 struct]}


>>fh2 = str2func(\'sqr\')
fh2 = 
    @sqr

>> func2str(fh2)
ans =
sqr
>> func2str(sqr)
ans =
@(x)x.^2

>> S.a = @sin; S.b = @cos; S.c = @tan;
>> structfun(@(x)x(linspace(1, 4, 3)), S, \'UniformOutput\', false)
ans = 
    a: [0.8415 0.5985 -0.7568]
    b: [0.5403 -0.8011 -0.6536]
    c: [1.5574 -0.7470 1.1578]

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
delphi连接oracle对接代码发布时间:2022-07-18
下一篇:
DelphiMemory-MappedFile简单示例发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap