matlab报告.docx
《matlab报告.docx》由会员分享,可在线阅读,更多相关《matlab报告.docx(33页珍藏版)》请在冰点文库上搜索。
![matlab报告.docx](https://file1.bingdoc.com/fileroot1/2023-5/23/9abd1ce3-a3fe-47e2-872c-2adb71b61fb2/9abd1ce3-a3fe-47e2-872c-2adb71b61fb21.gif)
matlab报告
MATLAB实验报告
学 院:
信电学院
年级:
11级
专业班级:
自动化1班
姓名:
学号:
110410…
5.1控制系统的阶跃响应
一、实验目的
(1)学习控制系统的单位阶跃响应。
(2)记录单位阶跃响应曲线。
(3)掌握时间响应分析的一般方法。
二、实验内容
(1)二阶系统为
2入程序,观察并记录阶跃响应曲线。
②键入damp(den),计算系统的闭环根、阻尼比、无阻尼振荡频率,并作记录键入。
记录实际测取的峰值大小ymax(tp),峰值时间tp、过渡时间ts,并与理论值相比较。
三、实验代码
clc%清屏
clearall%清除所有命令
closeall
t=[0:
.01:
15];%设置横坐标的范围以及步长
num=[10];%传递函数分子系数向量
den=[114];%传递函数分母系数向量
sys=tf(num,den);%用函数tf建立一个连续系统传递函数模型
y=step(sys,t);%用函数tf建立一个连续系统传递函数模型
damp(den)%计算系统的闭环根、阻尼比、无阻尼振荡频率。
plot(t,y,'r');%画图,颜色为红色
holdon;%图形保持
xlabel('t(s)');
ylabel('y');%表明坐标名称
gridon;%建立系统,并画出基本图形
ymax=max(y);
xm=find(y==ymax);
plot(t(xm),ymax,'ro','MarkerSize',3);%画小圆,圈出最大值
plot(t(xm)*ones(1,6),[0:
ymax/5:
ymax],'--');%过最大值点做t轴的垂线
text(0.1,1.4,strcat('t_p=',num2str(t(xm)),'s'))%指示出t_p
text(t(xm)-1,ymax+0.2,strcat('y_m_a_x=',num2str(ymax)));%求出峰值及峰值时间
yss=2.5;
dta=0.02;
x=600;
whileabs(yss-y(x))end
t_s=x*0.01;
y_t_s=y(x);
y1=y_t_s-2.5;
text(t_s+0.3,y_t_s+0.15,'y_t_s');
plot(t_s,y_t_s,'ro','MarkerSize',3);
plot((t(xm)+4.4)*ones(1,4),[0:
y_t_s/3:
y_t_s],'--');
text(x*.01/2,0.6,strcat('t_s=',num2str(t_s),'s'))
text(t_s+3,y_t_s+0.2,strcat('yss=',num2str(y_t_s)));%求出调节时间及稳态值
annotation('doublearrow',[0.135,0.44],[0.20,0.20]);
annotation('doublearrow',[0.135,0.21],[0.35,0.35]);
plot([t_s-115],[y_t_s+0.1y_t_s+0.1],'--','Color','g');
plot([t_s-115],[y_t_s-0.05y_t_s-0.05],'--','Color','g');
text(t_s+1.5,y_t_s+0.2,'\downarrow','FontSize',18);
text(t_s+1.5,y_t_s-0.2,'\uparrow','FontSize',18);
text(t_s+1.5,y_t_s-0.2,'△=±2%','Color','m');%标出误差带
plot([t(xm)15],[ymaxymax],'--','Color','c');
plot([t(xm)15],[2.52.5],'--','Color','c');
annotation('doublearrow',[0.280.28],[0.620.84]);
e=(ymax-2.5)/2.5;
text(t(xm)+1.5,ymax-0.5,strcat('δ%=',num2str(e)));%求出超调并标注
四、阶跃响应图像:
2.修改参数,分别实现ζ=1和ζ=2的响应曲线
①m文件程序:
【change.m】
clc
clearall
closeall
num=[10];
den0=[1210];
sys0=tf(num,den0);
den1=[16.3210];
sys1=tf(num,den1);
den2=[112.6410];
sys2=tf(num,den2);
step(sys0,'r')
holdon
step(sys1,'b')
holdon
step(sys2,'g')
legend('ζ=0.36','ζ=1.00','ζ=2.00');
②图形:
五、试作出以下系统的阶跃响应,并比较与原系统响应曲线的差别与特点,作出相应的实验分析结果。
①
②
3
④
程序代码:
clc%清屏
clearall%清除所有命令
closeall
t=[0:
0.01:
20];%设置横坐标的范围以及步长
num1=[210];%传递函数分子系数向量
den1=[1210];%传递函数分母系数向量
sys1=tf(num1,den1);%用函数tf建立一个连续系统传递函数模型
num2=[10.510];%传递函数分子系数向量
den2=[1210];%传递函数分母系数向量
sys2=tf(num2,den2);
num3=[4];%传递函数分子系数向量
den3=[1120.5100];%传递函数分母系数向量
sys3=tf(num3,den3);%用函数tf建立一个连续系统传递函数模型
num4=[1];%传递函数分子系数向量
den4=[1210];%传递函数分母系数向量
sys4=tf(num4,den4);%用函数tf建立一个连续系统传递函数模型
step(sys1,'r')
holdon
step(sys2,'b')
holdon
step(sys3,'g')
holdon
step(sys4,'c')
holdon
legend('①','②','③','④');
xlabel('t(s)');
ylabel('y');%表明坐标名称
gridon;%建立系统,并画出基本图形
所得图形为:
六、实验分析
(1)分析系统的阻尼比和无阻尼振荡频率对系统阶跃响应的影响。
分析:
ζ=0.36时,是欠阻尼,其单位阶跃响应是“衰减震荡”;ζ=1.00时,是临界阻尼,其单位阶跃响应是“无超调、无震荡”的曲线;ζ=2.00时,是过阻尼,其单位阶跃响应也是“无超调、无震荡”的,但是上升速度比ζ=1.00时要慢。
(2)分析响应曲线的零初值、非零初值与系统模型的关系。
分析:
当传递函数的分子分母阶数相同时为非零初值,而分子阶数小于分母时为零处值。
不存在分子阶数大于分母的情况(可分解),所以不考虑。
(3)分析响应曲线的稳态值与系统模型的关系。
分析:
当传递函数的分子分母阶数相同时,稳态值为零;分子阶数小于分母时,稳态值为1。
(4)分析系统零点对阶跃响应的影响。
分析:
若系统存在右半侧零点(不稳定零点),则阶跃响应会有向下的峰值。
5.2控制系统的脉冲响应
一、实验目的
(1)学习控制系统的单位脉冲响应。
(2)记录时间响应曲线。
(3)掌握时间响应分析的一般方法。
二、实验内容
(1)二阶系统为
①键入程序,观察、记录脉冲响应曲线。
②键入damp(den),计算系统的闭环根、阻尼比、无阻尼振荡频率,并作记录。
记录实际测取的峰值大小Amax(tp),峰值时间tp,过渡时间ts,并与理论值相比较。
三、实验代码
clc%清屏
clearall%清除所有命令
closeall
t=[0:
0.01:
20];
num=[4];
den=[114];
impulse(num,den);
y=impulse(num,den,t);
damp(den)
holdon;%图形保持
xlabel('t(s)');
ylabel('y(t)');%表明坐标名称
gridon;%花坐标方格
ymax=max(y);
xm=find(y==ymax);
plot(t(xm),ymax,'ro','MarkerSize',3);%画小圆,圈出最大值
plot(t(xm)*ones(1,6),[0:
ymax/5:
ymax],'--');%过最大值点做t轴的垂线
text(0.01,0.55,strcat('t_p=',num2str(t(xm)),'s'))%指示出t_p
text(t(xm),ymax+0.05,strcat('y_m_a_x=',num2str(ymax)));%求出峰值及峰值时间
yss=0;
dta=0.02;
x=500;
whileabs(yss-y(x))end
t_s=x*0.01;
y_t_s=y(x);
y1=y_t_s;
text(t_s+0.05,y_t_s+0.1,'y_t_s');
plot(t_s,y_t_s,'ro','MarkerSize',3);
plot((t(xm)+4.3)*ones(1,4),[0:
y_t_s/3:
y_t_s],'--');%过(t_s,y_t_s)做t轴的垂线
text(x*.01/1.8,0.03,strcat('t_s=',num2str(t_s),'s'))
text(t_s+4,y_t_s+0.15,strcat('yss=',num2str(y_t_s)));%求出调节时间及稳态值
annotation('doublearrow',[0.15,0.465],[0.40,0.40]);
annotation('doublearrow',[0.15,0.2],[0.55,0.55]);
plot([t(xm)15],[ymaxymax],'--','Color','c');
plot([t(xm)15],[00],'--','Color','c');
annotation('doublearrow',[0.280.28],[0.850.42]);
e=(ymax-y_t_s)/ymax;
text(t(xm)+1.5,ymax-0.5,strcat('δ%=',num2str(e)));%求出超调并标注
四、求出超调并标注出超调并标注脉冲响应图像
2.修改参数,分别实现ζ=1和ζ=2的响应曲线,并作记录。
①m文件程序:
【imchange.m】
clc
clearall
closeall
num=[10];
den0=[1210];
sys0=tf(num,den0);
den1=[16.3210];
sys1=tf(num,den1);
den2=[112.6410];
sys2=tf(num,den2);
impulse(sys0,'r')
holdon
impulse(sys1,'b')
holdon
impulse(sys2,'g')
legend('ζ=0.36','ζ=1.00','ζ=2.00')
②图形:
五、试作出以下系统的脉冲响应,并比较与原系统响应曲线的差别
与特点,作出相应的实验分析结果。
1
2
程序代码为:
clc%清屏
clearall%清除所有命令
closeall
t=[0:
0.01:
20];
num1=[4];
den1=[114];
num2=[10];
den2=[1210];
impulse(num1,den1);
holdon
impulse(num2,den2);
xlabel('t(s)');
ylabel('y(t)');%表明坐标名称
legend('①','②')
图形为:
六、实验分析
(1)分析系统的阻尼比和无阻尼振荡频率对系统脉冲响应的影响。
(3)分析:
当0<ζ<1时,系统处于衰减震荡,且ζ越大,超调越小,上升时间越长。
而ζ>1时,系统响应为无震荡、无超调。
系统的无阻尼振荡频率越大,反应越快。
(2)分析响应曲线的零初值、非零初值与系统模型的关系。
分析:
当传递函数的分子分母阶数相同时为非零初值,而分子阶数小于分母时为零处值。
不存在分子阶数大于分母的情况(可分解),所以不考虑。
(3)分析响应曲线的稳态值与系统模型的关系。
分析:
当传递函数的分子分母阶数相同时,稳态值为零;分子阶数小于分母时,稳态值为1。
(4)分析系统零点对阶跃响应的影响。
分析:
若系统存在右半侧零点(不稳定零点),则脉冲响应会有向下的峰值。
5.3控制系统的根轨迹作图
一、实验目的
(1)直观了解LTI系统的根轨迹分析法。
(2)加深对连续LTI系统的根轨迹分析法的理解。
(3)了解MATLAB相关函数的调用格式及作用。
(4)加深对连续LTI系统的时域分析的基本原理与方法的理解和掌握。
二、知识提示
根轨迹法是分析和设计线性定常系统常用的图解方法之一,利用它可以了解和分析系统的性能,尤其是对系统进行定性的分析。
三、涉及的MATLAB函数
printsys(num,den,′s′):
显示或打印输出由num和den所确定的传递函数。
rlocus(num,den):
计算并画出由num和den所确定的系统的根轨迹。
四、实验内容与方法
1.验证性实验
(1)已知一个单位反馈系统的开环传递函数为
取k=1。
试绘制其根轨迹。
执行下面的程序:
clc%清屏
clearall%清除所有命令
closeall
num=[1,1,0];%传递函数分子系数向量
den=[1,5,2,0,0];%传递函数分母系数向量
printsys(num,den,'s');%显示或打印输出由num和den所确定的传递函数。
rlocus(num,den);%计算并画出由num和den所确定的系统的根轨迹。
xlabel('实轴');
ylabel('虚轴');%表明坐标名称
%gridon;%花坐标方格
所得根轨迹图为:
(2)已知一个单位反馈系统的开环传递函数为:
取k=1。
试绘制其根轨迹。
执行下面的程序:
clc%清屏
clearall%清除所有命令
closeall
num1=[1,1];%H1(s)的传递函数分子系数向量
den1=[1,-1,0];%H1(s)的传递函数分母系数向量
num2=1;%H2(s)的传递函数分子系数向量
den2=[1,4,16];%H2(s)的传递函数分母系数向量
[numden]=series(num1,den1,num2,den2);%用于将H1(s)和H2(s)两个线性模型串联
printsys(num,den,'s');%显示或打印输出由num和den所确定的传递函数。
rlocus(num,den);%计算并画出由num和den所确定的系统的根轨迹
xlabel('实轴');
ylabel('虚轴');%表明坐标名称
所得根轨迹图为:
(3)已知一个单位反馈系统的开环传递函数为
试分别绘制其根轨迹,并比较零极点对系统性能的影响。
执行下面的程序:
clc%清屏
clearall
closeall%清除所有命令
num1=[1];%H1(s)的传递函数分子系数向量
den1=[110];%H1(s)的传递函数分母系数向量
figure;%建立一个画图窗口
rlocus(num1,den1);%计算并画出由num1和den1所确定的系统的根轨迹
num2=1;%H2(s)的传递函数分子系数向量
den2=[1321];%H2(s)的传递函数分母系数向量
figure;
rlocus(num2,den2);%计算并画出由num2和den2所确定的系统的根轨迹
num3=[132.5];%H3(s)的传递函数分子系数向量
den3=den1;%H3(s)的传递函数分母系数向量
figure;
rlocus(num3,den3);%计算并画出由num3和den3所确定的系统的根轨迹
其根轨迹分别如图5-6、图5-7和图5-8所示。
图5-6
图5-7
图5-8
5.4控制系统的波特图
一、实验目的
(1)利用计算机作出开环系统的波特图。
(2)观察并记录控制系统的开环频率特性。
(3)控制系统的开环频率特性分析。
二、实验步骤
(1)开机执行程序:
c:
\matlab\bin\matlab.exe
(或用鼠标双击图标)进入MATLAB命令窗口:
“CommandWindow”。
(2)相关MATLAB函数:
bode(num,den)
bode(num,den,w)
[mag,phase,w]=bode(num,den)
例如,系统的开环传递函数
作图程序为:
clc
clearall
closeall
num=[10];
den=[1210];
w=logspace(-1,1,32);%w范围和点数n
bode(num,den,w);
xlabel('lg(w)');
ylabel('A/a(w)');%表明坐标名称
gridon;%画网格线
所得图形为:
logspace(d1,d2,n)将变量w作对数等分。
命令中d1、d2为10d1~10d2之间的变量范围,n为等分点数。
semilogx(x,y)半对数绘图命令、函数格式与plot()相同。
例如,已知传递函数:
作对数幅频特性。
程序为:
clc
clearall
closeall
num=[10];
den=[1210];
bode(num,den);
w=logspace(-1,1,32);%w范围和点数n
mag=10./((i*w).^2+2.*(i*w)+10);%幅频特性
l=20*log(abs(mag));%对数幅频特性
semilogx(w,l);%半对数作图
gridon;%画网格线
%margin(num,den);
[Mg,Pc,wg,wc]=margin(num,den)%返回变量Mg为幅值裕度,Pc为相位裕度,幅值裕度Mg对应的频率为wg,相位裕度Pc对应的频率为wc。
所得图形为:
二、实验内容
(1)
取T=0.1,&=0.1。
作图程序代码为:
clc
clearall
closeall
num=[1];
den=[0.010.021];
w=logspace(-1,1,32);%w范围和点数n
gridon;%画网格线
margin(num,den);%得到系统的增益和相位裕度,并绘制出波特图
[Mg,Pc,wg,wc]=margin(num,den)%返回变量Mg为幅值裕度,Pc为相位裕度,幅值裕度Mg对应的频率为wg,相位裕度Pc对应的频率为wc。
text(14.0003,140,strcat('\uparroww=','wc'))%用上箭头,指示出wc
text(1,100,strcat('\rightarroww=','0db'))
text(12.0003,100,strcat('\leftarrow'))
text(14.0003,100,strcat('\rightarroww=','40db'))%表示出各个段的斜率
xlabel('lg(w)');
ylabel('A/a(w)');%表明坐标名称
所得图形为:
(2)
作图程序代码为:
clc
clearall
closeall
num=31.6;
den=[0.0010.1110];
sys=tf(num,den);
w=logspace(-2,8,400);%w范围和点数n
bode(sys,w);
y=bode(sys,w);
xlabel('lg(w)');
ylabel('20lgA(w)');
gridon;%画网格线
margin(sys);%得到系统的增益和相位裕度,并绘制出波特图
[Mg,Pc,wg,wc]=margin(sys)%返回变量Mg为幅值裕度,Pc为相位裕度,幅值裕度Mg对应的频率为wg,相位裕度Pc对应的频率为wc。
text(2,80,strcat('-20'));
text(50,40,strcat('-40'));
text(800,0,strcat('-60'));%标注斜率
text(wg,-20,strcat('\leftarrowwg=',num2str(wg)));
text(wc,-50,strcat('\leftarrowwc=',num2str(wc)));%标注截止频率和穿越频率
holdon
w=logspace(-2,1,400);
a=find(w==1)
y=a+(-20)*w;
plot(w,y,'r');
K=num;
b=20*log10(K);
w1=[.001,.5,1,5,10,20,50,100,300,10000];%定义渐近线的定义域
mag1=b-20*log10(w1(1:
5));%求解幅值渐近线方程
mag2=b+20-40*log10(w1(5:
8));
mag3=b+60-60*log10(w1(8:
end));%求解相位渐近线方程
pha1=-90;
pha2=-90-45*log10(w1(3:
5));
pha3=-45-90*log10(w1(5:
9));
pha4=-267-.2*log10(w1(9:
end));%绘图
margin(sys);%稳定裕度绘图
holdon
semilogx(w1(1:
3),[pha1,pha1,pha1],'c--')%绘制相角渐近线
semilogx(w1(3:
5),pha2,'c--')
semilogx(w1(5:
9),pha3,'c--',w1(9:
end),pha4,'c--')text(1.5,-180+Pc/2,strcat('\gamma_c=',num2str(wc),'\rightarrow'));
text(wg,-130,strcat('\leftarrowwg=',num2str(wg)));h=get(gcf,'Children');%获取当前图形的子句柄set(gcf,'CurrentAxes',h(3))%将幅值特性图设置为当前
if~ishold
holdon
end
semilogx(w1(1:
5),mag1,'c--')%绘制幅值渐近线
se