delta=0.25;
Ti=1.265;
num1=[Ti 1]; den1=[delta*Ti 0];
G1=tf(num1,den1); %传递函数,在s域中,比如你要输入G(s)=1/(s^2+2s+1),就可以在matlab中输入G=tf([1],[1 2 1])
K0=0.5;
T=0.5;
num2=[K0]; den2=conv(conv([T 1],[T 1]),[T 1]);
G2=tf(num2,den2);
[nums,dens]=series(num1,den1,num2,den2);
[numc,denc]=cloop(nums,dens);
G=tf(numc,denc)
t=[0:0.01:20];
[y,t]=step(G,t);
j=1;
y1=0.98*y(2000);y2=1.02*y(2000);
for i=2:1:2000
if j<3;
if y(i)>y(i-1)&&y(i)>y(i+1);
a(j)=y(i);
b(j)=i*0.01;
j=j+1;
end
end
if ((y(i)-y1)*(y(i+1)-y1)<0)||((y(i)-y2)*(y(i+1)-y2)<0)
ts=i*0.01;
end
end
T=b(2)-b(1);
pusai=1-abs((a(2)-y(2000))/(a(1)-y(2000)));
Ti
ts
pusai
plot(t,y,t,y1,'-',t,y2,'-');
grid on;
xlabel('t(sec)');ylabel('y(t)');
评论0