我想在一个函数中使用一个向量输入,例如维数为[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的矢量。
所有帮助表示赞赏。 谢谢。
我想在一个函数中使用一个向量输入,例如维数为[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的矢量。
所有帮助表示赞赏。 谢谢。
您需要先将x
转换为单元格,然后通过{:}
传递。
xcell = num2cell(x);
F(xcell{:});
或者,您可以指定要x1
和x2
被作为数组传递的,当你使用Vars
parameter调用matlabFunction
。
F = matlabFunction(f, 'Vars', {[x1, x2]});
F([1 1]);
可能重复[如何将矩阵向量传递到函数参数在matlab中](http://stackoverflow.com/questions/19188884/how-can-i-pass-a-matrix-vector -into-a-function-argument-in-matlab) – excaza