2015-09-06 73 views
2

我想一个数组或一个向量传递给这样一个象征性的功能:如何将Vector/Array传递给符号函数?

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

value = [0, -1]; 

rosenbrock(value) 

,但我无法找到一个方法来做到这一点。我也试图声明输入作为[]

rosenbrock([x, y]) = ... 

,但我仍然得到

Error using symfun/subsref (line 135) 
Symbolic function expected 2 inputs and received 1. 

回答

1

如果你想在一个数组来传递,然后输入参数的功能需要设计为处理阵列:

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

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

使用类似y中的函数我们的问题,则需要在对应于矢量value的指标两个参数来传递:

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

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

这个问题是不是真的特定符号数学 - 你需要做同样的事,任何Matlab的功能。

0

实际上,我遇到了类似的问题,你绝对不会希望有 一)设计你的函数来处理数组 OR B)传似表达式:

rosenbrock(value(1), value(2)) 

的解决方案是这样的:

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