我有一个函数(通过符号工具箱创建),它带有许多标量输入:
npm install
我想改变这个函数,以便它只需要一个输入并将向量的元素处理到上面函数的输入参数:
scalarFn = @(a,b,c) a .* b + c
我已经使用vectorFn = @(theta) theta(1) .* theta(2) + theta(3)
和deal
与num2cell
索引相结合,但我还没有弄清楚如何编写此功能。
最终,我想要一个函数,它接受像{:}
这样的函数句柄(但不一定只有3个参数 - 很可能更多)并返回一个只有一个输入的新函数句柄scalarFn
作为矢量。有没有办法做到这一点?
答案 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])
但这似乎是一个特别不健全的解决方案。