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{:});