MATLAB矢量元素冲突。

MATLAB矢量元素冲突。,matlab,vector,elements,Matlab,Vector,Elements,我一直很难摆脱这个错误。我读过几个类似的问题,但我一定忽略了一些非常简单的问题。下面的代码使用ODE45。有3个初始条件,在我看来,我的函数也输出3个变量。然而,它说: “???在116处使用==>ODE参数时出错 DBTS返回长度为2的向量,但返回初始值的长度 条件向量是3。DBTS和 初始条件向量必须具有相同数量的元素。” 这是我的m文件: function dDdt=Dbts(t,i) global p1 p2 p3 n V1 Gb Ib U I=i(1); X=i(2); G=i(3

我一直很难摆脱这个错误。我读过几个类似的问题,但我一定忽略了一些非常简单的问题。下面的代码使用ODE45。有3个初始条件,在我看来,我的函数也输出3个变量。然而,它说:

“???在116处使用==>ODE参数时出错 DBTS返回长度为2的向量,但返回初始值的长度 条件向量是3。DBTS和 初始条件向量必须具有相同数量的元素。”

这是我的m文件:

function dDdt=Dbts(t,i)
global p1 p2 p3 n V1 Gb Ib U 

I=i(1);
X=i(2);
G=i(3);

dIdt=-(n*(I-Ib))+(U/V1);
dXdt=-(p2*X)+(p3*I);
dGdt=-(p1*G)-(X*(G-Gb))+(9.0*exp(-0.05*t));

dDdt=[dIdt;dXdt;dGdt];
这是我在main中输入的内容:

global p1 p2 p3 n V1 Gb Ib
p1=0.028735;
p2=0.0228344;
p3=.00005035;
n=.0926;
V1=12;
Gb=81;
Ib=15;
global G X I U
TT=[];
SS=[];
i0=[0 0 0];
tspan=[0 400];
[t,i]=ode45(@Dbts,tspan,i0);

此时,我在上面发布的错误出现了。我知道我一定是算错了什么,但我就是不能准确地指出。如果有人能帮上忙,我将不胜感激。当我解决这个问题时,我所要做的就是绘制3个图表。

我认为这是因为
U
没有定义:

>> size(U)
ans =

   0   0

因此,
DiDt
的大小是
0x0
,因此,
Dbts
的输出是
2x1
G
X
I
。啊,我完全忽略了U的大小。非常感谢。G、 I和X都很好,因为我在初始条件中定义了它们。用新的眼光解决问题总是比较容易的。再次感谢!