实验指导书 MATLAB语言及其用实验指导书.doc
MATLAB 语言及其用实验指导书目录实验一 Matlab 使用方法和程序设计. 实验二 控制系统的模型及其转换. 实验三 控制系统的时域、频域和根轨迹分析. 实验四 动态仿真集成环境-Simulink. 实验一 Matlab使用方法和程序设计一、 实验目的1、掌握Matlab软件使用的基本方法;2、熟悉Matlab的数据表示、基本运算和程序控制语句3、熟悉Matlab绘图命令及基本绘图控制4、熟悉Matlab程序设计的基本方法二、 实验内容:1、帮助命令使用help命令,查找 sqrt(开方)函数的使用方法;在 CommandWindowL里输入help,接在在search里输入sqr即可。sqrtSquare rootSyntaxB = sqrt(X)DescriptionB = sqrt(X) returns the square root of each element of the array X. For the elements of X that are negative or complex, sqrt(X) produces complex results.TipsSee sqrtm for the matrix square root.Examplessqrt(-2:2)')ans = 0 + 1.4142i 0 + 1.0000i 0 1.0000 1.4142See Alsonthroot | realsqrt | sqrtm2、矩阵运算(1) 矩阵的乘法已知A=1 2;3 4; B=5 5;7 8;求A2*BA=1 2;3 4;B=5 5;7 8;C=A2*B>> format compactC = 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/BA=1 2 3;4 5 6;7 8 9;B=1 0 0;0 2 0;0 0 3;C=AB,D=A/BC = 1.0e+016 * 0.3152 -1.2609 0.9457 -0.6304 2.5218 -1.8913 0.3152 -1.2609 0.9457D = 1.0000 1.0000 1.0000 4.0000 2.5000 2.00007.0000 4.0000 3.0000(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;B=A.', C=A'B = 5.0000 + 1.0000i 0 + 6.0000i 2.0000 - 1.0000i 4.0000 1.0000 9.0000 - 1.0000iC = 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行的元素;A=1 2 3;4 5 6;7 8 9;B1=A(1,2,3)B2=A(2,3,:)B1 = 3 6B2 = 4 5 6 7 8 9方括号用magic函数生成一个4阶魔术矩阵,删除该矩阵的第四列A=magic(4)B=A(:,1,2,3)或A=magic(4)A(:,4)=A = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1B = 16 2 3 5 11 10 9 7 6 4 14 153、多项式(1)求多项式 的根Y=1 0 -2 -4;S=roots(Y)S = 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)polyval(P,A)A = 1.2000 3.0000 5.0000 0.9000 5.0000 1.7000 5.0000 6.0000 3.0000 9.0000 0 1.0000 1.0000 2.0000 3.0000 4.0000P = 1.0000 -6.9000 -77.2600 -86.1300 604.5500ans = 1.0e+003 * 0.3801 -0.4545 -1.9951 0.4601 -1.9951 0.2093 -1.9951 -2.8880 -0.4545 -4.8978 0.6046 0.4353 0.4353 0.0840 -0.4545 -1.16174、基本绘图命令(1)绘制余弦曲线 y=cos(t),t0,2(2)在同一坐标系中绘制余弦曲线y=cos(t-0.25)和正弦曲线y=sin(t-0.5),t0,2(1)t=0:0.05:2*pi;y=cos(t);plot(t,y)(2)t=0:0.05:2*pi;y1=cos(t-0.25);y2=sin(t-0.5);plot(t,y1)hold onplot(t,y2)5、基本绘图控制绘制0,4区间上的x1=10sint曲线,并要求:(1)线形为点划线、颜色为红色、数据点标记为加号;(2)坐标轴控制:显示范围、刻度线、比例、网络线(3)标注控制:坐标轴名称、标题、相应文本;t=0:0.1:4*pi;x1=10*sin(t);plot(t,x1,'r-.+'); %画图,显示红色、点划线、标记加号;axis(0,15,-10,10); %定义显示范围,横轴为0,15,纵轴为-10,10;title('曲线x1=10sint'); %显示标题;xlabel('T轴');ylabel('X1轴'); %显示坐标轴名称;set(gca,'xminortick','on');set(gca,'yminortick','on'); %显示刻度线;grid on %显示网络线6、基本程序设计(1)编写命令文件:计算1+2+n<2000 时的最大n值;(2)编写函数文件:分别用for和while循环结构编写程序,求2的0到n次幂的和。(3)如果想对一个变量x自动赋值。当从键盘输入y或Y时(表示是),x自动赋为1;当从键盘输入n或N时(表示否),x自动赋为0;输入其他字符时终止程序。(1) s=0;i=0;while(s<2000) i=i+1; s=s+i;endi=i-1, s=s-is = 1954i = 62(2)sum1=0;for i=0:15sum1=sum1+2i;enddisp('用for循环所求的值为' num2str(sum1) );sum2=0;i=0;while i<16sum2=sum2+2i;i=i+1;enddisp('用while循环所求的值为' num2str(sum2) );结果:用for循环所求的值为65535用while循环所求的值为65535实验二 控制系统的模型及其转换一、 实验目的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');g11=3*(s+12);g21=4*(s+5)*(s+3);G=g11;g21/(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,-1.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 -1.4 -0.6 x4 0 0 0.6 0 b = u1 x1 1 x2 0 x3 1 x4 0 c = x1 x2 x3 x4 y1 0 0 0 1 d = u1 y1 0 Continuous-time model.2. 控制系统模型的转换2.1 将1.1的模型转换为零极点模型s=zpk('s');G=4*(s+2)*(s2+6*s+6)/s/(s+1)3/(s3+3*s2+2*s+5)Zero/pole/gain: 4 (s+2) (s+1.268) (s+4.732)-s (s+1)3 (s+2.904) (s2 + 0.09584s + 1.722)2.2 将1.2的模型转换为状态空间模型s=zpk('s');g1=3*(s+12);g2=4*(s+5)*(s+3);G=g1;g2/(s+3)/(s+4)/(s+5);ZTFC=ss(G)结果a = x1 x2 x3 x1 -3 1 0 x2 0 -4 2 x3 0 0 -5 b = u1 x1 0 x2 0 x3 4 c = x1 x2 x3 y1 3.375 0.375 0 y2 0 0.5 1 d = u1 y1 0 y2 0 Continuous-time model.2.3 将1.3 的模型转换为零极点模型A=-2.8,-1.4,0,0;1.4,0,0,0;-1.8,-0.3,-1.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);X=zpk(G)Zero/pole/gain: 0.6 (s2 + s + 1.54)-(s+1.4)2 (s+1.061) (s+0.3394)3. 控制系统模型的连接:已知两个系统 求按串联、并联、系统2联接在反馈通道时的负反馈系统的状态方程。A1=0,1;1,-2;B1=0;1;C1=1,3;D1=1;A2=0,1;-1,-3;B2=0;1;C2=1,4;D2=0;G1=ss(A1,B1,C1,D1);G2=ss(A2,B2,C2,D2);G=G2*G1G3=G1+G2G4=G1/(1+G1*G2)结果:a = x1 x2 x3 x4 x1 0 1 0 0 x2 -1 -3 1 3 x3 0 0 0 1 x4 0 0 1 -2 b = u1 x1 0 x2 1 x3 0 x4 1 c = x1 x2 x3 x4 y1 1 4 0 0 d = u1 y1 0 Continuous-time model. a = x1 x2 x3 x4 x1 0 1 0 0 x2 1 -2 0 0 x3 0 0 0 1 x4 0 0 -1 -3 b = u1 x1 0 x2 1 x3 0 x4 1 c = x1 x2 x3 x4 y1 1 3 1 4 d = u1 y1 1 Continuous-time model. a = x1 x2 x3 x4 x5 x6 x1 0 1 0 0 0 0 x2 1 -2 -1 -3 -1 -4 x3 0 0 0 1 0 0 x4 0 0 1 -2 1 4 x5 0 0 0 0 0 1 x6 0 0 -1 -3 -2 -7 b = u1 x1 0 x2 1 x3 0 x4 0 x5 0 x6 1 c = x1 x2 x3 x4 x5 x6 y1 1 3 -1 -3 -1 -4 d = u1 y1 1 Continuous-time model.>>4、典型系统的生成:4 典型二阶系统 试建立 时的系统传递函数模型。s=tf('s');H=36/(s2+2.4*s+36)结果Transfer function: 36-s2 + 2.4 s + 365、连续系统的离散化:对连续系统 在采样周期 T=0.1 时进行离散化。s=tf('s');G=6*(s+3)/(s+1)*(s+2)*(s+5);G1=c2d(G,0.1)结果:Transfer function:0.02552 z2 + 0.002704 z - 0.01601-z3 - 2.33 z2 + 1.786 z - 0.4493 Sampling time: 0.1实验三 控制系统的时域、频域和根轨迹分析一、 实验目的1、掌握如何使用Matlab进行系统的时域分析2、掌握如何使用Matlab进行系统的频域分析3、掌握如何使用Matlab进行系统的根轨迹分析二、 实验内容:1、时域分析1.1、某系统的开环传递函数为 试编程求系统在单位负反馈下的阶跃响应曲线,并求最大超调量>> den=20den = 20>> num=1 8 36 40 0num = 1 8 36 40 0>> G=tf(den,num) Transfer function: 20-s4 + 8 s3 + 36 s2 + 40 s >> Gc=feedback(G,1) Transfer function: 20-s4 + 8 s3 + 36 s2 + 40 s + 20 >> step(Gc)1.2、典型二阶系统 编程求:当 分别取值为0.2、0.4、0.6、0.8、1.0、1.5、2.0时的单位阶跃响应曲线。>> s=tf('s');>>G=62/(s2+2*0.2*6*s+62);>>G1=62/(s2+2*0.4*6*s+62);>>G2=62/(s2+2*0.6*6*s+62);>>G3=62/(s2+2*0.8*6*s+62);>>G4=62/(s2+2*1.0*6*s+62);>>G5=62/(s2+2*1.5*6*s+62);>>G6=62/(s2+2*2.0*6*s+62);>>step(G,G1,G2,G3,G4,G5,G6);绘制出的曲线如下:1.3、典型二阶系统传递函数为: 绘制当:分别取2、4、6、8、10、12时的单位阶跃响应曲线。>>s=tf('s');>> G=22/(s2+2*0.7*2*s+22);>> G1=42/(s2+2*0.7*4*s+42);>> G2=62/(s2+2*0.7*6*s+62);>> G3=82/(s2+2*0.7*8*s+82);>> G4=102/(s2+2*0.7*10*s+102);>> G5=122/(s2+2*0.7*12*s+122);>> step(G,G1,G2,G3,G4,G5)绘制出的曲线如下:2、根轨迹分析根据下面负反馈系统的开环传递函数,绘制系统根轨迹,并分析使系统稳定的K值范围。 >> s=tf('s');>> G=1/s*(s+1)*(s+3);>> rlocus(G)绘制出的图形如下:使得K值稳定的范围是0<K<12.43、频域分析 典型二阶系统传递函数为: 3.1 绘制当:取2、4、6、8、10、12时的伯德图>> s=tf('s');>>G=22/(s2+2*0.7*2*s+22);>> G1=42/(s2+2*0.7*4*s+42);>> G2=62/(s2+2*0.7*6*s+62);>> G3=82/(s2+2*0.7*8*s+82);>> G4=102/(s2+2*0.7*10*s+102);>> G5=122/(s2+2*0.7*12*s+122);>> bode(G,G1,G2,G3,G4,G5)绘制出的图形如下:32 绘制当:分别取0.2、0.4、0.6、0.8、1.0、1.5、2.0时的伯德图。 >> s=tf('s');>>G=62/(s2+2*0.2*6*s+62);>> G1=62/(s2+2*0.4*6*s+62);>> G2=62/(s2+2*0.6*6*s+62);>> G3=62/(s2+2*0.8*6*s+62);>> G4=62/(s2+2*1.0*6*s+62);>> G5=62/(s2+2*1.5*6*s+62);>> G6=62/(s2+2*2.0*6*s+62);>> bode(G,G1,G2,G3,G4,G5,G6)实验四 动态仿真集成环境Simulink一、 实验目的1、熟悉Simulink模块库中常用标准模块的功能及其应用;2、掌握利用Simulink在用户窗口中建立控制系统仿真模型的方法;3、掌握模块参数和仿真参数的设置以及建立子系统的方法。二、 实验内容1. 用Simulink对以下系统进行仿真 其中u(t)为系统输入,y(t)为系统输出,仿真当输入为正弦信号时,输出的信号的波形,仿真时间 0< t < 100 。在Simulink中建立模型,在Fcn里输入2*sin(u)*abs(u>30)+8*sin(u)*abs(u<=30)模型如下:选择仿真时间为0100s进行仿真在CommandWindow里输入plot(tout,yout)即可得到下图:2. 在滑艇的运行过程中,滑艇主要受到如下作用力的控制:滑艇自身的牵引力F,滑艇受到的水的阻力 。其中水的阻力 , 为滑艇的运动速度。由运动学的相关定理可知,整个滑艇系统的动力学方程为: 其中,m为滑艇的质量。假设滑艇的质量为1000kg,建立此系统的Simulink模型并进行分析。设置F=2000;在CommandWindow里输入以下命令:>> plot(tout,yout)即可得到下图:3 输入教材中 P198 中例题5-2 并作仿真。在CommandWindow里输入以下命令:>> plot(tout,yout)>> comet3(yout(:,1),yout(:,2),yout(:,3)就可得到下图: