利用matlab由开环传递函数求闭环传递函数并求其单位冲击和阶跃响应
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
利用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('相位/degree');
grid;
运行该程序可得系统的单位阶跃和脉冲响应曲线如下,
图1系统的单位阶跃响应曲线
图2系统的脉冲响应曲线系统的Bode图如下,
图3系统的Bode图