将符号表达式转换为函数处理程序时的向量输入[Matlab]

将符号表达式转换为函数处理程序时的向量输入[Matlab],matlab,symbolic-math,Matlab,Symbolic Math,我有一首象征性的颂歌: syms x1 x2 cs ks ms t2 real xx=[x1 x2]; fun_sym=[xx(2); (cs/ms)*(xx(1)^2-1)*xx(2) - (ks/ms)*xx(1)]; 我想使用ODE函数解决它,但首先我需要将其转换为函数处理程序: v=matlabFunction(fun_sym,'vars', [t2,xx,cs,ks,ms]); [T,x]= ode15s(@(t2,xx) v,t,[1 0]); 其中t=[0:0.1:1]

我有一首象征性的颂歌:

syms x1 x2 cs ks ms t2 real
xx=[x1 x2];   
fun_sym=[xx(2); (cs/ms)*(xx(1)^2-1)*xx(2) - (ks/ms)*xx(1)];
我想使用ODE函数解决它,但首先我需要将其转换为函数处理程序:

v=matlabFunction(fun_sym,'vars', [t2,xx,cs,ks,ms]);
[T,x]= ode15s(@(t2,xx) v,t,[1 0]); 
其中
t=[0:0.1:1]
。Matlab给出了一个错误:

@(T2,XX)V returns a vector of length 1, but the length of initial conditions vector is 2. 

我认为这是因为它将v解释为:
@(t2,x1,x2,cs,ks,ms)
,所以它期望第二个参数是
x1
,这是一个1乘1的元素,尽管我已经将v定义为
[t2,xx,…]
,其中
xx
是一个1乘2的元素。如何解决此问题?

这是可行的,但您还需要为其他参数赋值(
cs
ks
ms


完美的有没有什么方法可以传递一个向量而不是x1,x2?这不起作用:
v=matlabFunction(f,'vars',{t2,xx,cs,ks});[T,x]=ode15s(@(t2,xx)v(t2,xx,1,1),T[10])否,我不知道;由于符号数组的处理方式,我认为在Matlab中没有任何方法可以做到这一点。但我看不出有什么理由不这样做会成为一个问题。
v=matlabFunction(fun_sym,'vars', [t2,x1,x2,cs,ks,ms]);
[T,x]= ode15s(@(t2,xx) v(t2,xx(1),xx(2),cs,ks,ms),t,[1 0]);