Matlab 如何将向量/数组传递给符号函数?

Matlab 如何将向量/数组传递给符号函数?,matlab,Matlab,我想将数组或向量传递给符号函数,如下所示: syms x y rosenbrock(x, y) = 100 * (y - x^2)^2 + (1 - x)^2; value = [0, -1]; rosenbrock(value) 但是我找不到一个方法来做这件事。我还尝试将输入声明为[] rosenbrock([x, y]) = ... 但我还是很高兴 如果要传入数组,则函数的输入参数需要设计为处理数组: syms x rosenbrock(x) = 100*(x(2) - x(1)^2

我想将数组或向量传递给符号函数,如下所示:

syms x y
rosenbrock(x, y) = 100 * (y - x^2)^2 + (1 - x)^2;

value = [0, -1];

rosenbrock(value)
但是我找不到一个方法来做这件事。我还尝试将输入声明为
[]

rosenbrock([x, y]) = ...
但我还是很高兴


如果要传入数组,则函数的输入参数需要设计为处理数组:

syms x
rosenbrock(x) = 100*(x(2) - x(1)^2)^2 + (1 - x(1))^2;

value = [0, -1];
rosenbrock(value)
对于您问题中的函数,您需要传入两个与向量
值的索引相对应的参数:

syms x y
rosenbrock(x, y) = 100*(y - x^2)^2 + (1 - x)^2;

value = [0, -1];
rosenbrock(value(1), value(2))

这个问题并不是专门针对符号数学的——对于任何Matlab函数,你都需要做同样的事情。

事实上,我遇到了类似的问题,你肯定不想这样做 a) 设计处理数组的函数 或 b) 传递下列表达式:

rosenbrock(value(1), value(2))
解决办法是:

v = num2cell(value);
rosenbrock(v{:});
v = num2cell(value);
rosenbrock(v{:});