《MATLAB 语言及其应用》实验报告.doc
MATLAB 语言及其应用实验报告实验指导老师:学院:电气与信息工程学院班级:自动化姓名: 学号: 学号:MATLAB 语言及其应用实验指导目录实验一 Matlab 使用方法和程序设计. 实验二 控制系统的模型及其转换. 实验三 控制系统的时域、频域和根轨迹分析. 实验四 动态仿真集成环境-Simulink. 实验五 直流电机自动调速系统控制器设计实验一 Matlab使用方法和程序设计一、 实验目的1、掌握Matlab软件使用的基本方法;2、熟悉Matlab的数据表示、基本运算和程序控制语句3、熟悉Matlab绘图命令及基本绘图控制4、熟悉Matlab程序设计的基本方法二、 实验内容:1、帮助命令使用help命令,查找 sqrt(开方)函数的使用方法;2、矩阵运算(1) 矩阵的乘法已知A=1 2;3 4; B=5 5;7 8;求A2*B>> A=1 2;3 4;>> B=5 5;7 8;>> C=A2*BC = 105 115 229 251(2) 矩阵除法已知 A=1 2 3;4 5 6;7 8 9;B=1 0 0;0 2 0;0 0 3;AB,A/B>> A=1 2 3;4 5 6;7 8 0;>> B=1 0 0;0 2 0;0 0 3;>> AB,A/Bans = -1.7778 1.7778 -0.3333 1.5556 -1.5556 0.6667 -0.1111 0.4444 -0.3333ans = 1.0000 1.0000 1.0000 4.0000 2.5000 2.0000 7.0000 4.0000 0(3) 矩阵的转置及共轭转置已知A=5+i,2-i,1;6*i,4,9-i;求A.', A'>> A=5+i,2-i,1;6*i,4,9-i;>> A.',A'ans = 5.0000 + 1.0000i 0 + 6.0000i 2.0000 - 1.0000i 4.0000 1.0000 9.0000 - 1.0000ians = 5.0000 - 1.0000i 0 - 6.0000i 2.0000 + 1.0000i 4.0000 1.0000 9.0000 + 1.0000i(4) 使用冒号表达式选出指定元素已知: A=1 2 3;4 5 6;7 8 9;求A中第3列前2个元素;A中所有列第2,3行的元素;方括号用magic函数生成一个4阶魔术矩阵,删除该矩阵的第四列>> A=1 2 3;4 5 6;7 8 9;>> B=A(1:2,3)B = 3 6>> B1=A(2:3,:)B1 = 4 5 6 7 8 9>> B1=A(2:3,:)B1 = 4 5 6 7 8 9B(:,4)= B = 16 2 3 5 11 10 9 7 6 4 14 15 3、多项式(1)求多项式 的根>> p=1 0 -2 -4;>> r=roots(p)r = 2.0000 -1.0000 + 1.0000i -1.0000 - 1.0000i(2)已知A=1.2 3 5 0.9;5 1.7 5 6;3 9 0 1;1 2 3 4 ,求矩阵A的特征多项式;把矩阵A作为未知数代入到多项式中;>> A=1.2 3 5 0.9;5 1.7 5 6;3 9 0 1;1 2 3 4;>> p=poly(A)p = 1.0000 -6.9000 -77.2600 -86.1300 604.5500>> y=sym(A) y = 6/5, 3, 5, 9/10 5, 17/10, 5, 6 3, 9, 0, 1 1, 2, 3, 44、基本绘图命令(1)绘制余弦曲线 y=cos(t),t0,2(2)在同一坐标系中绘制余弦曲线y=cos(t-0.25)和正弦曲线y=sin(t-0.5),t0,2>> t=0:0.01:2*pi;>> y=cos(t);>> plot(t,y);>> title('余弦函数y=cos(t)');>> x=0:0.01:2*pi;y=cos(x-0.25);plot(x,y)hold ony=sin(x-0.5);plot(x,y)>> title('y=cos(t-0.25),y=sin(t-0.5)')5、基本绘图控制绘制0,4区间上的x1=10sint曲线,并要求:(1)线形为点划线、颜色为红色、数据点标记为加号;(2)坐标轴控制:显示范围、刻度线、比例、网络线(3)标注控制:坐标轴名称、标题、相应文本;>> t=0:0.01:4*pi;>> x1=10*sin(t);>> plot(t,x1,'-.r+');>> xlabel('X');>> ylabel('Y');>> grid on>> title('x1=10sin(t)')>> legend('y',4)6、基本程序设计(1)编写命令文件:计算1+2+n<2000 时的最大n值;>> s=0;n=0;>> while s<2000;s=s+n;n=n+1;end>> mn=n-1mn = 63(2)编写函数文件:分别用for和while循环结构编写程序,求2的0到n次幂的和。For循环function y=miqiuhe (n)y=0;x=0;for (i=0:n) x=2i; y=y+x;endend>> y=miqiuhe(4)y =31While循环function y =midehe(n)y=0;x=0;i=0;while i<=n x=2i; y=y+x; i=i+1;endend>> y=miqiuhe(4)y =31(3)如果想对一个变量x自动赋值。当从键盘输入y或Y时(表示是),x自动赋为1;当从键盘输入n或N时(表示否),x自动赋为0;输入其他字符时终止程序。str=input('输入字符:','s') ;输入字符:y>> if str='y'|str='Y',x=1;elseif str='n'|str='N',x=0;else error('终止程序') ;end ,xx = 1str=input('输入字符:','s') ;输入字符:n>> if str='y'|str='Y',x=1;elseif str='n'|str='N',x=0;else error('终止程序') ;end ,xx = 0str=input('输入字符:','s') ;输入字符:c>> if str='y'|str='Y',x=1;elseif str='n'|str='N',x=0;else error('终止程序') ;end ,x ?终止程序实验二 控制系统的模型及其转换一、 实验目的1、掌握建立控制系统模型的函数及方法;2、掌握控制系统模型间的转换方法及相关函数;3、熟悉控制系统模型的连接方法;4、掌握典型系统模型的生成方法。二、 实验内容:1. 控制系统模型1.1 系统的模型为试建立系统的传递函数模型。>> s=tf('s');G=4*(s+2)*(s2+6*s+6)/s/(s+1)3/(s3+3*s2+2*s+5) Transfer function: 4 s3 + 32 s2 + 72 s + 48-s7 + 6 s6 + 14 s5 + 21 s4 + 24 s3 + 17 s2 + 5 s1.2 已知单输入双输出系统的零极点模型 建立系统的零极点模型。>> s=zpk('s');>> g=3*(s+12);4*(s+5)*(s+3)/(s+3)*(s+4)*(s+5) Zero/pole/gain from input to output. 3 (s+12) #1: - (s+3) (s+4) (s+5) 4 (s+5) (s+3) #2: - (s+3) (s+4) (s+5)1.3 给定系统的状态空间表达式, 建立系统的状态空间模型。>> a=-2.8,-1.4,0,0;1.4,0,0,0;-1.8,-0.3,-0.4,-0.6;0,0,0.6,0;>> b=1;0;1;0;>> c=0,0,0,1;d=zeros(1,1);g=ss(a,b,c,d)a = x1 x2 x3 x4 x1 -2.8 -1.4 0 0 x2 1.4 0 0 0 x3 -1.8 -0.3 -0.4 -0.6 x4 0 0 0.6 0b = u1 x1 1 x2 0 x3 1 x4 0c = x1 x2 x3 x4 y1 0 0 0 1d = u1 y1 0Continuous-time model.2. 控制系统模型的转换2.1 将1.1的模型转换为零极点模型>> s=zpk('s');>> g=4*(s+2)*(s2+6*s+6)/s/(s+1)3/(s3+3*s+2*s+5)Zero/pole/gain: 4 (s+2) (s+1.268) (s+4.732)-s (s+1)3 (s+0.8688) (s2 - 0.8688s + 5.755)2.2 将1.2的模型转换为状态空间模型>> s=zpk('s');>> g=3*(s+12);4*(s+5)*(s+3)/(s+3)*(s+4)*(s+5);>> G=ss(g)a = x1 x2 x1 1 -12 x2 0 1b = u1 x1 0 x2 -2c = x1 x2 y1 1.5 0d = u1 y1 0 e = x1 x2 x1 0 1 x2 0 0Continuous-time model.2.3 将1.3 的模型转换为零极点模型>> a=-2.8,-1.4,0,0;1.4,0,0,0;-1.8,-0.3,-0.4,-0.6;0,0,0.6,0;>> c=0,0,0,1;d=zeros(1,1);>> b=1;0;1;0;c=0,0,0,1;d=zeros(1,1);g=ss(a,b,c,d);>> g1=zpk(g)Zero/pole/gain: 0.6 (s2 + s + 1.54)-(s+1.4)2 (s2 + 0.4s + 0.36)3. 控制系统模型的连接:已知两个系统 求按串联、并联、系统2联接在反馈通道时的负反馈系统的状态方程。>> A1=0,1;1,-2;>> b1=1;1;>> c1=1,3;>> d1=0;>> G=ss(A1,b1,c1,d1);>> a2=0,1;-1,-3;>> b2=0;1;>> c2=1 4;>> d2=0;>> g2=ss(a2,b2,c2,d2);>> g3=g2*g1a = x1 x2 x3 x4 x5 x6 x1 0 1 0 0 0 0 x2 -1 -3 0.5763 0.3262 0.6 0 x3 0 0 -0.2 1 0 0 x4 0 0 -0.32 -0.2 1.104 0 x5 0 0 0 0 -1.4 1 x6 0 0 0 0 -3.109e-016 -1.4b = u1 x1 0 x2 0 x3 0 x4 0 x5 0 x6 1c = x1 x2 x3 x4 x5 x6 y1 1 4 0 0 0 0d = u1 y1 0Continuous-time model.>> g4=g1+g2a = x1 x2 x3 x4 x5 x6 x1 -0.2 1 0 0 0 0 x2 -0.32 -0.2 1.104 0 0 0 x3 0 0 -1.4 1 0 0 x4 0 0 -3.109e-016 -1.4 0 0 x5 0 0 0 0 0 1 x6 0 0 0 0 -1 -3b = u1 x1 0 x2 0 x3 0 x4 1 x5 0 x6 1c = x1 x2 x3 x4 x5 x6 y1 0.5763 0.3262 0.6 0 1 4d = u1 y1 0Continuous-time model.>> g5=feedback(g1,g2)a = x1 x2 x3 x4 x5 x6 x1 -0.2 1 0 0 0 0 x2 -0.32 -0.2 1.104 0 0 0 x3 0 0 -1.4 1 0 0 x4 0 0 -3.109e-016 -1.4 -1 -4 x5 0 0 0 0 0 1 x6 0.5763 0.3262 0.6 0 -1 -3b = u1 x1 0 x2 0 x3 0 x4 1 x5 0 x6 0c = x1 x2 x3 x4 x5 x6 y1 0.5763 0.3262 0.6 0 0 0d = u1 y1 0Continuous-time model.4、典型系统的生成:4 典型二阶系统 试建立 时的系统传递函数模型。>>w=6;>> e=0.1;>> h=w2/(s2+2*e*w*s+w2)Transfer function: 36-s2 + 1.2 s + 365、连续系统的离散化:对连续系统 在采样周期 T=0.1 时进行离散化。s=tf('s');>> g=6*(s+3)/(s+1)/(s+2)/(s+5);>> t=0.1;>> gd=c2d(g,t)Transfer function:0.02552 z2 + 0. z - 0.01601-z3 - 2.33 z2 + 1.786 z - 0.4493Sampling time: 0.1实验三 控制系统的时域、频域和根轨迹分析一、 实验目的1、掌握如何使用Matlab进行系统的时域分析2、掌握如何使用Matlab进行系统的频域分析3、掌握如何使用Matlab进行系统的根轨迹分析二、 实验内容:1、时域分析1.1、某系统的开环传递函数为 试编程求系统在单位负反馈下的阶跃响应曲线,并求最大超调量。>> s=tf('s');>> g=20/(s4+8*s3+36*s2+40*s);>> g1=feedback(g,1);step(g1)1.2、典型二阶系统 编程求:当 分别取值为0.2、0.4、0.6、0.8、1.0、1.5、2.0时的单位阶跃响应曲线。wn=6;s=tf('s');figure;for z=0.2:0.2:1.0 g=wn2/(s2+2*z*wn*s+wn2) step(g) hold on endfor z=1.0:0.5:2.0g=wn2/(s2+2*z*wn*s+wn2) step(g) hold on end1.3、典型二阶系统传递函数为: 绘制当:分别取2、4、6、8、10、12时的单位阶跃响应曲线。z=0.7s=tf('s')figure;for wn=2.0:2.0:12.0 g=wn2/(s2+2*z*wn*s+wn2) step(g) hold onend2、根轨迹分析根据下面负反馈系统的开环传递函数,绘制系统根轨迹,并分析使系统稳定的K值范围。 s=tf('s')g=1/s*(s+1)*(s+3)rlocus(g),grid3、频域分析 典型二阶系统传递函数为: 3.1 绘制当:取2、4、6、8、10、12时的伯德图z=0.7s=tf('s')bode(g)for wn=2.0:2.0:12.0 g=wn2/(s2+2*z*wn*s+wn2) hold onend 32 绘制当:分别取0.2、0.4、0.6、0.8、1.0、1.5、2.0时的伯德图。wn=6;s=tf('s');bode(g);for z=0.2:0.2:1.0 g=wn2/(s2+2*z*wn*s+wn2) hold on endfor z=1.0:0.5:2.0g=wn2/(s2+2*z*wn*s+wn2) hold on end实验四 动态仿真集成环境Simulink一、 实验目的1、熟悉Simulink模块库中常用标准模块的功能及其应用;2、掌握利用Simulink在用户窗口中建立控制系统仿真模型的方法;3、掌握模块参数和仿真参数的设置以及建立子系统的方法。二、 实验内容1. 用Simulink对以下系统进行仿真 其中u(t)为系统输入,y(t)为系统输出,仿真当输入为正弦信号时,输出的信号的波形,仿真时间 0< t < 100 。Simulink仿真图波形图:>>plot(tout,yout)2. 在滑艇的运行过程中,滑艇主要受到如下作用力的控制:滑艇自身的牵引力F,滑艇受到的水的阻力 。其中水的阻力 , 为滑艇的运动速度。由运动学的相关定理可知,整个滑艇系统的动力学方程为: 其中,m为滑艇的质量。假设滑艇的质量为1000kg,建立此系统的Simulink模型并进行分析。Simulink仿真图波形图:>>plot(tout,yout)3 输入教材中 P198 中例题5-2 并作仿真。Simulink仿真图波形图:>>plot(tout,yout)>> plot3(yout(:,1),yout(:,2),yout(:,3),grid