matlab 两个函数句柄相同,matlab - 函数句柄和函数之间的区别 - SO中文参考 - www.soinside.com...

我不知道C / C ++,但在MATLAB中,函数是一个非匿名程序,它(可能)接受输入并且(可能)给出输出,并使用function关键字定义,例如:

function a = MySum(b)

a = sum(b);

end

而函数句柄是一种匿名函数的快捷方式,即不能从该脚本外部调用。它是使用@语法创建的:

f=@(b)sum(b);

该函数保存为.m文件,函数名称为文件名,因此,使用上面的示例MySum.m。将此保存在您的路径上,并根据上述定义了匿名函数,这就是您调用它们的方式:

b = [1 2];

f=@(b)sum(b);

aFunction = MySum(b); % = 3

aAnon = f(b); % =3

如果我们现在在同一路径上有一个新脚本,如果我们不定义它,我们就不能使用匿名函数,请尝试:

b = [1 2];

aFunction = MySum(b); % = 3

aAnon = f(b); % gives error that f is undefined

如果在路径之外创建脚本,则函数本身也将失败:

b = [1 2];

aFunction = MySum(b); % gives error that MySum is undefined

aAnon = f(b); % gives error that f is undefined

函数句柄的使用有几个原因,其中两个最突出的是:在“伪装循环函数”中,例如arrayfun或bsxfun,它们需要像arrayfun(@function,array)这样的语法,或者当使用例如nnz(rand(size(N)>M)时。脚本中经常使用某种功能组合,例如f = @(M,N)nnz(rand(size(N)>M),缩短序列:f(N,M)现在可以调用nnz(rand(size(N)>M)而不是Wolfie's comment。

在f之后,确实存在函数句柄的双重性质:它可以充当指针,即上例中的sum如何是指向函数nnz(rand(size(N)>M)的指针,但也可以是它自己的函数,就像组合一样函数f=@(b) b.^2 + 5*b + 1或类似多项式的东西:function MySine()

x = 1:10;

y = sin(x);

plot(x,y)

end。

关于“可能”接受输入/输出的注意事项:

您可以将函数定义为

qazxswpoi

这是一个完全有效的函数,它不接受输入或输出参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值