利用matlab由开环传递函数求闭环传递函数并求其单位冲击和阶跃响应
例:设有一个系统的开环传递函数如下函数,
并绘制输出阶跃响应曲线和脉冲响应曲线
解:
编程(见:\work\CT_tch\resp_2_
clearall;
closeall;
%%%%%%%%%%%%%%
a0=[0000];%a0:开环传递函数分子多项式系数
b1=[10];%s
b2=[1];%
b3=[1];%s2++1)
b0=conv(b1,conv(b2,b3));%b0:开环传递函数分母多项式系数
%%%%闭环传递函数
aa=a0;%aa:闭环传递函数分子多项式系数
bb=b0+a0;%bb:闭环传递函数分子多项式系数
disp('SystemClosedLoopTransferFunctionis:')
aa
bb
%%%%计算:阶跃响应
t=0::20
y=step(aa,bb,t);%阶跃响应
%%%%绘制:阶跃响应
figure(1)
plot(t,y);
title('阶跃响应');%标题:阶跃响应
xlabel('时间/s');%横坐标
ylabel('幅值');%纵坐标
grid;
%%%%计算:脉冲响应
figure(2)
yy=impulse(aa,bb,t);%标题:脉冲响应
plot(t,yy);
title('脉冲响应');
xlabel('时间/s');
ylabel('幅值');
grid;%网格
%%%%绘制:脉冲响应
wt=logspace(-1,1);%对数空间(¨,10)
[mag,phase]=bode(a0,b0,wt);%计算:Bode中的幅值和相位
[Gm,Pm,Wcg,Wcm]=margin(a0,b0);%计算:稳定裕度
disp('SystemGainMarginanditsassociatedfrequencyare:');
Gm%模值稳定裕度
Wcg%幅值穿越频率,剪切频率,1/s
disp('SystemPhaseMarginanditsassociatedfrequencyare:');
Pm%相位稳定裕度
Wcm%-π相位穿越频率,1/s
%%%%绘制:Bode图
figure(3)
Subplot(211);%对数幅值-频率图
amp=20*log10(mag);%20*log(mag)dB
semilogx(wt,amp);
title('对数幅值-频率图');
xlabel('频率/rad');
ylabel('幅值/dB');
grid;
subplot(212);%相位-频率图
semilogx(wt,phase);
title('相位-频率图');
xlabel('频率/rad');
ylabel(用subplot函数'相位/degree');
grid;
运行该程序可得系统的单位阶跃和脉冲响应曲线如下,
图1 系统的单位阶跃响应曲线
图2 系统的脉冲响应曲线
系统的Bode图如下,
3 系统的Bode图