使用ode45求解状态空间方程时出错



我的代码应该在程序结束时输出X的列向量。我犯了很多错误。请帮忙!

clc;
clear;
t0=0;
tend=.001;
T=[t0 .00005];
T1=[.00005 tend];
temp=1;
X(:,1) = [0;0;0;0];
for k=1:2   
for i= temp:50*(k)
[T,X]=ode45(@(T,X)sys(T,X,A1,B1),T,X(:,1));
else
[T1,X1]=ode45(@(T1,X1)sys1(T1,X1,A0,B0),T1,X(:,end));
end
end
temp=50;
end 
function Xdot = sys(T,X,A1,B1,U)
Xdot= A1*X + B1*U;
end
function Xdot = sys1(T1,X,A0,B0,U)
Xdot= A0*X + B0*U;
end

错误如下:

Not enough input arguments. 
Error in odearguments (line 90)
f0 = feval(ode,t0,y0,args{:});   % ODE15I sets args{1} to yp0.
Error in ode45 (line 115)
odearguments(FcnHandlesUsed, solver_name, ode, tspan, y0, options, 
varargin);

看起来您没有将参数U设置为函数syssys1

我已经用<U missing>:突出显示了下面的相应位置

if sw(i)==0 && X(2,i)> vdon || sw(i)==1 && X(1,i)>0
sw(i+1)=1;
[T,X] = ode45( @(T,X) sys(T,X,A1,B1, <U missing> ), T, X(:,1) );
else
sw(i+1)=0;
[T1,X1] = ode45( @(T1,X1) sys1(T1,X1,A0,B0, <U missing> ), T1, X(:,end) );
end

相关内容

  • 没有找到相关文章

最新更新