将数组处理为函数参数

时间:2018-06-06 19:17:03

标签: matlab vectorization anonymous-function

我有一个函数(通过符号工具箱创建),它带有许多标量输入:

npm install

我想改变这个函数,以便它只需要一个输入并将向量的元素处理到上面函数的输入参数:

scalarFn = @(a,b,c) a .* b + c

我已经使用vectorFn = @(theta) theta(1) .* theta(2) + theta(3) dealnum2cell索引相结合,但我还没有弄清楚如何编写此功能。

最终,我想要一个函数,它接受像{:}这样的函数句柄(但不一定只有3个参数 - 很可能更多)并返回一个只有一个输入的新函数句柄scalarFn作为矢量。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:1)

作为一个笨重的答案,我知道我可以用eval声明来做:

vectorFn = eval(['@(theta) scalarFn(' strjoin(arrayfun(@(x) ['theta(' num2str(x) ')'], 1:nargin(scalarFn), 'Uniform', false), ', ') ')']);

scalarFn(1,2,3)
vectorFn([1 2 3])

但这似乎是一个特别不健全的解决方案。