我有一个包含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(:))
但它会产生错误 任何人都可以给我一个解决方案吗?
答案 0 :(得分:4)
使用anonymous functions and its syntax似乎有一些基本的误解。
对于我认为你想做的事,你基本上有三个选择:
使用 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{:})
使用 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)
使用 varargin
的最后一个选项实际上取决于案例,可能如下所示:
func3 = @(varargin) [varargin{:}]
p = num2cell(p)
answer = func3(p{:})