我想运行以下代码,但我一直收到此错误:
使用DynamicSystem / lsim时出错(第85行) 当模拟对特定输入信号的响应时,输入数据U必须是a 在时间向量T中具有与样本一样多的行的矩阵,以及与输入一样多的列 信道。
代码是:
V=300;
Vdc=700;
L=10*10^-3;
C=1500*10^-6;
R=1;
Dd=sqrt(2)*300/700;
w=2*pi*50;
A=[-R/L w -Dd/L 0 0;
-w -R/L -Dd/L 0 0;
(3*Dd)/2*C 0 0 0 0;
0 1 0 0 0;
0 0 1 0 0;];
B=[-Vdc/L 0;
0 -Vdc/L;
0 0;
0 0;
0 0;];
C=[1 0 0 0 0;
0 1 0 0 0;
0 0 1 0 0;];
D=[0 0;
0 0;
0 0;];
states={'id','iq','vdc','iq_dot','vdc_dot'};
inputs={'dd','dq'};
outputs={'id','iq','vdc'};
sys_ss=ss(A,B,C,D,'statename',states,'inputname',inputs,'outputname',outputs);
Q=eye(5);
I=eye(2);
K=lqr(A,B,Q,I);
Ac=[(A-B*K)];
Bc=[B];
Cc=[C];
Dc=[D];
states={'id','iq','vdc','iq_dot','vdc_dot'};
inputs={'r'};
outputs={'id','iq','vdc'};
sys_cl=ss(Ac,Bc,Cc,Dc,'statename',states,'inputname',inputs,'outputname',outputs);
x0=[0.1,0.1,0.1];
t=0:0.01:5;
r=zeros(size(t));
[y,t]=lsim(sys_cl,r,t,x0);
plot(t,y)
任何帮助都非常感谢。
答案 0 :(得分:0)
你犯了两个错误,使用命令'help lsim'来查找说明。
[yout,x] = lsim(a, b, c, d, u, t, x0)
1.矩阵U具有与SYS中的输入一样多的列,并且其第i行指定时间T(i)处的输入值。 2.初始条件X0的长度必须与状态数相匹配。
所以,我改变了你的代码:
sys_cl=ss(Ac,Bc,Cc,Dc,'statename',states,'inputname',inputs,'outputname',outputs);
x0=[0.1,0.1,0.1, 0.1,0.1];
t=0:0.01:5;
r=zeros(length(inputs), length(t));
[y,t]=lsim(sys_cl,r,t,x0);