clc
clear
display('请输入一阶惯性加纯滞后系统的相关参数:') ;
k0=input('系统增益k0:\n') ;
t0=input ( '系统时延t0(s):\n') ;
T0=input('时间常数T0(s):\n') ;
t_for_id=input('辨识时间(s)(该时间应大于等于5T):\n') ;
G0=tf(k0,[T0,1],'inputdelay',t0) ;
display('原系统传递函数:') ;
G0
t=0:0.01:t_for_id;
y=step(G0,t); %原系统阶跃响应
%用两点法辨识
k1=y(t_for_id *100) ;
for ii=1:t_for_id *100
if ((y(ii+1)>0.39*k1)&&(y(ii)<=0.39*k1))
ii_1=ii; %选第一个点
end
if (( y(ii+1)>0.63*k1) && ( y(ii)<=0.63*k1))
ii_2=ii; %选第二个点
break;
end
end
%两点法辨识所得参数
t1=(2*ii_1 - ii_2) /100 ;
T1=(2*(ii_1 - ii_2) ) /100 ;
G1=tf ( k1,[T1,1],'inputdealy',t1) ;
display('用两点法辨识得到的传递函数为:') ;
G1
%将辨识结果与原系统阶跃响应显示在同一窗口,比较观察辨识结果
figure;
step(G0)
hold on;
step(G1)
legend('原系统','两点法') ;
title('用两点法对系统进行辨识') ;
clear
display('请输入一阶惯性加纯滞后系统的相关参数:') ;
k0=input('系统增益k0:\n') ;
t0=input ( '系统时延t0(s):\n') ;
T0=input('时间常数T0(s):\n') ;
t_for_id=input('辨识时间(s)(该时间应大于等于5T):\n') ;
G0=tf(k0,[T0,1],'inputdelay',t0) ;
display('原系统传递函数:') ;
G0
t=0:0.01:t_for_id;
y=step(G0,t); %原系统阶跃响应
%用两点法辨识
k1=y(t_for_id *100) ;
for ii=1:t_for_id *100
if ((y(ii+1)>0.39*k1)&&(y(ii)<=0.39*k1))
ii_1=ii; %选第一个点
end
if (( y(ii+1)>0.63*k1) && ( y(ii)<=0.63*k1))
ii_2=ii; %选第二个点
break;
end
end
%两点法辨识所得参数
t1=(2*ii_1 - ii_2) /100 ;
T1=(2*(ii_1 - ii_2) ) /100 ;
G1=tf ( k1,[T1,1],'inputdealy',t1) ;
display('用两点法辨识得到的传递函数为:') ;
G1
%将辨识结果与原系统阶跃响应显示在同一窗口,比较观察辨识结果
figure;
step(G0)
hold on;
step(G1)
legend('原系统','两点法') ;
title('用两点法对系统进行辨识') ;