2016-04-26 110 views
0

我想在一个函数中使用一个向量输入,例如维数为[m; 1],这个函数需要m个输入。例如:使用向量作为matlab中多输入函数的输入

syms x1 x2; 

f = x1^2 + x2^2; 
F = matlabFunction(f); 
x = [1;1]; 
F(x); 

上面的代码不起作用,因为F是2个输入的函数,它只将向量x看作单个输入。我知道我可以说F(x(1),x(2))和上面的工作,但我希望它适用于m个变量和一个长度为m的矢量。

所有帮助表示赞赏。 谢谢。

+1

可能重复[如何将矩阵向量传递到函数参数在matlab中](http://stackoverflow.com/questions/19188884/how-can-i-pass-a-matrix-vector -into-a-function-argument-in-matlab) – excaza

回答

2

您需要先将x转换为单元格,然后通过{:}传递。

xcell = num2cell(x); 
F(xcell{:}); 

或者,您可以指定要x1x2被作为数组传递的,当你使用Vars parameter调用matlabFunction

F = matlabFunction(f, 'Vars', {[x1, x2]}); 
F([1 1]); 
+0

顶部的一个漂亮地工作。感谢您的帮助和快速回复。 – ktobrien

+0

@ktobrien如果这项工作适合您,请考虑将其标记为帮助任何人提出类似问题的解决方案 – Suever