|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
我是MATLAB的菜鸟,但是设计要用MATLAB编程。
这是程序:
clear all; close all;
ts=0.001; j=5.15;x1=2.8;x3=1.8; %3个系统参数
t=input('单参数t=');
num=[j]; den=[x3 1]; sys=tf(num,den,'inputdelay',x1); %被控系统模型
dsys=c2d(sys,ts,'z'); [num,den]=tfdata(dsys,'v'); %离散化
u_1=0; u_2=0; u_3=0; y_1=0; y_2=0; y_3=0; du_1=0; du_2=0; %初始化
x=[0,0,0,0,0]'; error_1=0; error_2=0; error_3=0;
for k=1:1:1000
time(k)=k*ts; rin(k)=1.0;
Tf=t^2/(2*t+x1/2); Ti=x1/2+x3; Td=x1*x3/2*Ti; Kc=Ti/j*(2*t+x1/2);
B1=Tf/(Tf+x3); B2=Kc*x3*(1+x3/Ti+Td/x3)/(Tf+x3);
B3=Kc*x3*(1+2*Td/x3)/(Tf+x3); B4=Kc*Td/(Tf+x3);
du=B1*x(1)+B2*x(2)+B3*x(3)+B4*x(4);
u=du+u_1;
if u(k)>=10, u(k)=10; end
if u(k)<=-10, u(k)=-10; end
yout(k)=-den(2)*y_1-den(3)*y_2+num(2)*u_1+num(3)*u_2;
error=rin(k)-yout(k);
u_3=u_2; u_2=u_1; u_1=u(k); y_3=y_2; y_2=y_1; y_1=yout(k);
du_2=du_1; du_1=du;
x(1)=du_1; x(2)=error; x(3)=error_1; x(4)=error_2;
error_3=error_2; error_2=error_1; error_1=error;
end
plot(time,rin,'b',time,yout,'r'); xlabel('time(s)'); ylabel('rin,yout');
报错:
Index exceeds matrix dimensions.
索引超出矩阵范围
找不到是什么地方。请高手帮我看一下哪点有错了
[ 本帖最后由 ChaChing 于 2009-3-25 23:52 编辑 ] |
|