end risetime=t(n)
在阶跃输入条件下,y的值由零逐渐增大,当以上循环满足y=C时,推出循环,此时对应的时刻即为上升时间。
对于输出无超调的系统响应,上升时间定义为输出从稳态值的10%上升到90%所需时间,则计算程序如下:
C=dcgain(G); n =1;
while y(n)<0.1*C n=n+1; end m=1;
while y(n)<0.9*C m=m+1; end
risetime=t(m)-t(n)
调节时间(setllingtime)可由语句编程得到: C=dcgain(G); i =length(t);
while(y(i)>0.98*C)&(y(i)<1.02*C) i =i-1; end
setllingtime=t(i)
用矢量长度函数length( )可求得t序列的长度,将其设定为变量i的上限值。
例2 已知二阶系统传递函数为
利用下面的程序可得到阶跃响应如图所示及性能指标数据。
G=zpk([ ],[-1+3*i,-1-3*i],3);%计算最大峰值时间和它对应的超调量。
C=dcgain(G) [y,t]=step(G); plot(t,y) grid
[Y,k]=max(y); timetopeak=t(k)
percentovershoot=100*(Y-C)/C %计算上升时间。 n=1; while y(n) risetime=t(n) %计算稳态响应时间。 i=length(t); while(y(i)>0.98*C)&(y(i)<1.02*C) i=i-1; end setllingtime=t(i) 运行后的响应图如下图所示,命令窗口中显示的结果为: C =0.3000 timetopeak =1.0491 percentovershoot =35.0914 risetime =0.6626 setllingtime =3.5337 0.450.40.350.30.250.20.150.10.0500123456 2.2.3 求系统的单位冲激响应 impulse命令可求得系统的单位冲激响应。当不带输出变量时可在当前窗口得到单位冲激响应曲线,带有输出变量时则得到一组对应的数据。 命令格式: [y,x,t]=impulse(num,den,t)或impulse(num,den,t) 用[y,x,t]=impulse(num,den,t)时,要用Plot()函数才能打出曲线。用impulse(num,den,t)时,可直接打出曲线。 例3 求下列系统的单位冲激响应 C(s)10 ?G(s)?2R(s)s?0.3s?1Matlab命令为: >> t=[0:0.1:40]; >> num=1; >> den=[1,0.3,1]; >> impulse(num,den,t); >> grid; 其相应结果为: Impulse Response10.80.60.4Amplitude0.20-0.2-0.4-0.605101520Time (seconds)25303540例4:求下列系统的单位冲激响应: 1 G(s)?2 s?s?1解:Matlab命令为: t=[0:0.1:10]; num=1; den=[1 1 1]; [y,x,t]=impulse(num,den,t) plot(t,y);grid xlabel('Time[sec]t') ylabel('y') 响应结果为: 0.60.50.40.3y0.20.10-0.10123456Time[sec]t789102.2.4任意函数作用下系统的响应 用线性仿真函数lsim来实现,其调用格式为: y=lsim(sys,u,t) 式中:sys为系统数学模型;y(t)为系统输出响应;u为系统输入信号;t为仿时间。 例5:已知闭环系统传递函数为: C(s)10 ?G(s)?32R(s)s?0.3s?1对正弦输入r(t)?sin(t),求输出响应。 解:Matlab命令如下: num=[1]; den=[1,0.3,1.0]; y=tf(num,den); t=[0:0.1:20]; u=sin(t); c=lsim(y,u,t); plot(t,c); grid; xlabel('t sec'); ylabel('input and output') 其响应结果如下图: 432input and output10-1-2-3-40246810t sec1214161820 四、实验步骤 1、运行Matlab软件; 2、在其命令窗口中输入响应的命令或程序; 3、观察并记录。 五、实验习题 对课本122页题3.14的系统 求其单位阶跃响应的最大值,峰值时间和它对应的超调量,上升时间。 并与手工计算结果进行比较.