在输入变量之间调用匿名函数而不使用逗号

时间:2015-08-30 13:56:00

标签: matlab function

我有一个包含10个变量的匿名函数 现在我想用p = 1x10矩阵中的数据来评估它,如下所示:

answer=func(p(1),p(2),p(3),p(4),p(5),p(6),p(7),p(8),p(9),p(10))

我不想使用它,我需要类似的东西:

answer=func(p(:))

但它会产生错误 任何人都可以给我一个解决方案吗?

1 个答案:

答案 0 :(得分:4)

使用anonymous functions and its syntax似乎有一些基本的误解。

对于我认为你想做的事,你基本上有三个选择:

选项1

使用 10个输入参数定义函数并提供 10个输入值 - 将输入数组展开为comma separated list使用{:},需要中间num2cell步骤:

func1 = @(a,b,c,d,e,f,g,h,i,j) a + b + c + d + e + f + g + h + i + j
p = num2cell(p)
answer = func1(p{:})

选项2

使用 10个值的数组使用 1个输入参数定义函数并提供此数组:

func2 = @(p) p(1) + p(2) + p(3) + p(4) + p(5) + p(6) + p(7) + p(8) + p(9) + p(10)
answer = func2(p)

选项3

使用 varargin 的最后一个选项实际上取决于案例,可能如下所示:

func3 = @(varargin) [varargin{:}]
p = num2cell(p)
answer = func3(p{:})