系统仿真技术课程实验报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1中南大学课题名称:系统仿真技术课程实验报告学院:信息科学与工程学院2目录实验一MATLAB中矩阵与多项式的基本运算..............3实验二MATLAB绘图命令...............................................9实验三MATLAB程序设计.............................................13实验四MATLAB的符号计算与SIMULINK的使用...16实验五MATLAB在控制系统分析中的应用................21实验六连续系统数字仿真的基本算法..........................403实验一MATLAB中矩阵与多项式的基本运算一、实验任务1.了解MATLAB命令窗口和程序文件的调用。2.熟悉如下MATLAB的基本运算:①矩阵的产生、数据的输入、相关元素的显示;②矩阵的加法、乘法、左除、右除;③特殊矩阵:单位矩阵、“1”矩阵、“0”矩阵、对角阵、随机矩阵的产生和运算;④多项式的运算:多项式求根、多项式之间的乘除。二、基本命令训练1.eye(m)建立单位矩阵eye(4)ans=10000100001000012.one(n)、ones(m,n)建立全一矩阵one(n)运行未成功ones(2)ans=1111ones(2,4)ans=1111111143.zeros(m,n)全零矩阵zeros(3)ans=000000000zeros(2,7)ans=000000000000004.rand(m,n)服从均匀分布的随机矩阵rand(2)ans=0.84910.67870.93400.7577rand(1,3)ans=0.74310.39220.6555PS:randn()服从正态分布的随机矩阵randn(2)ans=-0.43260.1253-1.66560.28775.diag(v)对角矩阵diag(0)ans=05diag(2,2)ans=002000000diag(4,-3)ans=00000000000040006.A\B、A/B、inv(A)*B、B*inv(A)A/B=A*inv(B),A\B=inv(A)*Ba=[14;25]a=1425b=[37;13]b=3713a/bans=-0.50002.50000.50000.5000a\bans=-3.6667-7.66671.66673.66676inv(a)*bans=-3.6667-7.66671.66673.6667b*inv(a)ans=-0.33331.66670.33330.33337.roots(p)求多项式p的解a=[121]a=121roots(a)ans=-1-18.poly(a)求以a为根的多项式a=[101]a=101poly(a)ans=1-2109.conv、deconvconv(a,b)将多项式a,b相乘deconv(a,b)将多项式a,b相除a=[101]7a=101b=[11]b=11conv(a,b)ans=1111a=[10-1]a=10-1b=[1-1]b=1-1deconv(a,b)ans=11c=[111]c=111deconv(c,b)ans=1210.A*B与A.*B的区别A*B按照矩阵乘法相乘A.*B对应位置相乘a=[12;34]a=12348b(1:2,1:2)=[1]b=1111c=a*bc=3377c1=a.*bc1=123411.who与whos的使用后不加变量就是查询所有变量who内存变量列表whos内存变量详细信息whosaNameSizeBytesClassAttributesa1x324double12.disp、size(a)、length(a)的使用disp(a)显示变量asize(a)显示a的行,列数length(a)显示a的列数A(1:2,1:3)=[1]A=111111size(A)ans=923length(A)ans=3实验二MATLAB绘图命令一、实验任务熟悉MATLAB基本绘图命令,掌握如下绘图方法:1.坐标系的选择、图形的绘制;2.图形注解(题目、标号、说明、分格线)的加入;3.图形线型、符号、颜色的选取。二、基本命令训练1.plot绘制平面曲线2.loglog绘制全对数坐标图形,X、Y轴都是取以10为底的对数坐标3.semilogx绘制半对数坐标,其中X轴取以10为底的对数坐标,Y轴为线性坐标4.semilogy绘制半对数坐标,其中Y轴取以10为底的对数坐标,X轴为线性坐标5.polar绘制相角为theta,半径为radius的极坐标图形。6.title添加图片标示7.xlabel添加x坐标轴标示8.ylabel添加y坐标轴标示9.text在坐标处书写注解10.grid绘制网格11.bar条形图12.stairs阶梯图13.contour绘制等高线三、实验举例1.t=[0:pi/360:2*pi*22/3];x=93*cos(t)+36*cos(t*4.15);y=93*sin(t)+36*sin(t*4.15);plot(y,x),grid;102.t=0:0.05:100;x=t;y=2*t;z=sin(2*t);plot3(x,y,z,'b:')113.t=0:pi/20:2*pi;y=sin(x);stairs(x,y)4.th=[pi/200:pi/200:2*pi]';r=cos(2*th);polar(th,r),grid125.th=[0:pi/10:2*pi];x=exp(j*th);plot(real(x),imag(x),'r*');grid;13实验三MATLAB程序设计一、实验任务1.熟悉MATLAB程序设计的方法和思路;2.掌握循环、分支语句的编写,学会使用lookfor、help命令。二、程序举例1.计算1~1000之内的斐波那契亚数列f=[1,1];i=1;whilef(i)+f(i+1)1000f(i+2)=f(i)+f(i+1);i=i+1;endf,if=Columns1through14141123581321345589144233377Columns15through16610987i=152.m=3;n=4;fori=1:mforj=1:na(i,j)=1/(i+j-1);endendformatrataa=11/21/31/41/21/31/41/51/31/41/51/63.m=3;n=4;fori=1:mforj=1:na(i,j)=1/(i+j-1);endendaa=1.0000000000000000.5000000000000000.3333333333333330.2500000000000000.5000000000000000.3333333333333330.2500000000000000.2000000000000000.3333333333333330.2500000000000000.2000000000000000.166666666666667程序二结果为分数,程序三结果为小数4.x=input('请输入x的值:');ifx==10y=cos(x+1)+sqrt(x*x+1);elsey=x*sqrt(x+sqrt(x));end15y请输入x的值:10y=10.054301319108941请输入x的值:2y=3.6955181300451475.去掉多项式或数列开头的零项p=[0001302009];fori=1:length(p),ifp(1)==0,p=p(2:length(p));end;end;pp=13020096.建立MATLAB的函数文件,程序代码如下,以文件名ex2_4.m存盘functionf=ffibno(n)%ffibno计算斐波那契亚数列的函数文件%n可取任意自然数%程序如下f=[1,1];i=1;whilef(i)+f(i+1)nf(i+2)=f(i)+f(i+1);i=i+1;endlookforffibnoffibno-计算斐波那契亚数列的函数文件ffibno-计算斐波那契亚数列的函数文件helpffibnoffibno计算斐波那契亚数列的函数文件n可取任意自然数程序如下三、程序设计题用一个MATLAB语言编写一个程序:输入一个自然数,判断它是否是素数,如果是,输出“Itisoneprime”,如果不是,输出“Itisnotoneprime.”。要求通过调用子函数实现。最好能具有如下功能:①设计较好的人机对话界面,程序中含有提示性的输入输出语句。②能实现循环操作,由操作者输入相关命令来控制是否继续进行素数的判断。如果操作者希望停止这种判断,则可以退出程序。③如果所输入的自然数是一个合数,除了给出其不是素数的结论外,还应给出至少一种其因数分解形式。例:输入6,因为6不是素数。则程序中除了有“Itisnot16oneprime”的结论外,还应有:“6=2*3”的说明。a=input('请输入一个整数(endin0):');while(a~=0)ifa==1disp('1isnotaprimeoracompositenumber.')elseifisprime(a)==1fprintf('%disaprime.\n',a)elseifisprime(a)==0f=factor(a);m=length(f);fprintf('%disnotaprime,%d=%d',a,a,f(1))fori=2:mfprintf('*%d',f(i));endfprintf('\n');enda=input('请输入一个整数(endin0):');end实验四MATLAB的符号计算与SIMULINK的使用一、实验任务1.掌握MATLAB符号计算的特点和常用基本命令;2.掌握SIMULINK的使用。二、程序举例1.求矩阵对应的行列式和特征根a=sym('[a11a12;a21a22]');da=det(a)ea=eig(a)da=a11*a22-a12*a21ea=1/2*a11+1/2*a22+1/2*(a11^2-2*a11*a22+a22^2+4*a12*a21)^(1/2)1/2*a11+1/2*a22-1/2*(a11^2-2*a11*a22+a22^2+4*a12*a21)^(1/2)2.求方程的解(包括精确解和一定精度的解)r1=solve('x^2-x-1')rv=vpa(r1)rv4=vpa(r1,4)rv20=vpa(r1,20)r1=171/2*5^(1/2)+1/2-1/2*5^(1/2)+1/2rv=1.6180339887498948482045868343656-.61803398874989484820458683436560rv4=1.618-.6180rv20=1.6180339887498948482-.618033988749894848203.a=sym('a');b=sym('b');c=sym('c');d=sym('d');%定义4个符号变量w=10;x=5;y=-8;z=11;%定义4个数值变量A=[a,b;c,d]%建立符号矩阵AB=[w,x;y,z]%建立数值矩阵Bdet(A)%计算符号矩阵A的行列式det(B)%计算数值矩阵B的行列式A=[a,b][c,d]B=105-811ans=a*d-b*cans=1504.symsxy;s=(-7*x^2-8*y^2)*(-x^2+3*y^2);expand(s)%对s展开collect(s,x)%对s按变量x合并同类项(无同类项)factor(ans)%对ans分解因式ans=7*x^4-13*x^2*y^2-24*y^4ans=7*x^4-13*x^2*y^2-24*y^4ans=(8*y^2

1 / 44
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功