【问题标题】:Do anonymous functions support optional parameters?匿名函数是否支持可选参数?
【发布时间】:2020-02-13 00:37:13
【问题描述】:

有没有办法在 MATLAB 中实现的匿名函数中使用可选参数?

请看下面的例子:

foo = @(x,y)(x+y+12)

y可以是上述匿名函数中的可选参数吗,类似于

foo = @(x,y?)(x+y+12)

并且仅在提供时使用y

【问题讨论】:

  • 如果所有输入都已经是标量,为什么不使用可变长度的向量:foo = @(x) (sum(x)+12)?这适用于foo(10)foo([10 20]) 等。

标签: matlab anonymous-function optional-parameters


【解决方案1】:

MATLAB 中有一个名为“可变长度输入参数列表”的概念,请参阅varargin。这可以在一般匿名函数中使用,特别是在您的示例中:

foo = @(varargin) sum(cell2mat(varargin)) + 12;

foo(10)           % 10 + 12
foo(10, 20)       % 10 + 20 + 12
foo(10, 20, 30)   % 10 + 20 + 30 + 12
ans =  22
ans =  42
ans =  72

varargin 是一个元胞数组,因此我们需要将其转换为常规(数字)数组。然后我们只需要将这些值相加并加上 12。

当然,只有当所有传递的参数都是某种数字类型时,该解决方案才有效。

希望有帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-06
    • 2012-02-29
    • 1970-01-01
    • 1970-01-01
    • 2016-04-11
    • 2013-10-08
    • 2012-11-13
    相关资源
    最近更新 更多