运行具有' lsim'的代码时出错命令

时间:2015-01-08 22:57:13

标签: matlab runtime-error

我想运行以下代码,但我一直收到此错误:

使用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)

任何帮助都非常感谢。


1 个答案:

答案 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);