请,我的程序一直生成错误代码,我已经尝试了所有方法来调试它,但一切都无济于事。请帮忙。以下是代码和错误。
function xdot= Inverter(k,x)
xdot=zeros(4,1);
w= 376.991;
Lf= 800e-6;
Cf=75e-6;
t=0:1;
vd=4*sin(w*t);
vq=4*sin(w*t+ pi/2);
ild = 9.5*sin(w*t);
ilq= 9.5*sin(w*t+ pi/2);
% initial conditions
xdot(1) = vd/Lf + w*x(2)- x(3)/Lf;
xdot(2) = vq/Lf - w*x(1) + x(4)/Lf;
xdot(3) = x(1)/Cf + w*x(4)- ild/Cf;
xdot(4) = x(2)/Cf - w*x(3)- ilq/Cf;
xdot = [xdot(1); xdot(2); xdot(3); xdot(4)];
[k,x]=ode45(@Inverter,[0 0.5 ], [0 0 0 0]');
figure(1) ,plot(k,x(:,3))
Error is:
??? In an assignment A(I) = B, the number of elements in B and
I must be the same.
Error in ==> Inverter at 16
xdot(1) = vd/Lf + w*x(2)- x(3)/Lf;
Error in ==> odearguments at 110
f0 = feval(ode,t0,y0,args{:}); % ODE15I sets args{1} to yp0.
Error in ==> ode45 at 173
[neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn, ...
Error in ==> inv2 at 1
[k,x]=ode45(@Inverter,[0 0.5 ], [0 0 0 0]');
这些是我每次运行程序时都会遇到的错误代码。有人帮忙!谢谢
答案 0 :(得分:1)
我猜k
是你的t
,所以你真的需要:
vd=4*sin(w*k);
vq=4*sin(w*k+ pi/2);
ild = 9.5*sin(w*k);
ilq= 9.5*sin(w*k+ pi/2);
你可以摆脱t=0:1;
行。第xdot = [xdot(1); xdot(2); xdot(3); xdot(4)];
行也是多余的。