有没有一种方法可以在MATLAB实现的匿名函数中使用可选参数?
请参见以下示例:
foo = @(x,y)(x+y+12)
y
是否可以是上述匿名函数中的可选参数,例如
foo = @(x,y?)(x+y+12)
并且仅在提供时使用y
?
答案 0 :(得分:5)
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。
当然,仅当所有传递的参数均为某种数字类型时,该解决方案才有效。
希望有帮助!