Matlab应用与仿真ppt课件_第1页
Matlab应用与仿真ppt课件_第2页
Matlab应用与仿真ppt课件_第3页
Matlab应用与仿真ppt课件_第4页
Matlab应用与仿真ppt课件_第5页
已阅读5页,还剩106页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

.,1,Matlab应用与仿真,刘子龙武汉理工大学物理系,.,2,第一部分:Matlab简介,MATLAB是MatrixLaboratory(矩阵实验室)的简称,是美国MathWorks公司(,.,3,1.1Matlab的发展历程,20世纪70年代中期,美国的CleveMoler博士开发了FORTRAN语言的两个子程序库LINPACK和EISPACK,分别用于解线性方程和特征方程,它们代表了当时矩阵计算的最高水平,20世纪70年代后期,CleveMoler博士在讲授线性代数课程时想教学生使用LINPACK和EISPACK程序库,当他发现学生花大量时间用于编写接口程序而背离开课的目的时,便着手利用FORTRAN语言编写了一套方便调用LINPACK和EISPACK的接口程序,并将其命名为MATLAB(矩阵实验室)。,.,4,1983年-1984年,CleveMoler和JohnLittle(MathWorks公司总裁)等合作用C语言开发了第二代专业版MATLAB。并于1984年成立MathWorks公司,正式将MATLAB推向市场,这就是MATLAB的最初版本1.0。从这一代起MATLAB的核心就不再使用FORTRAN语言而是一直采用C语言编写。,1.1Matlab的发展历程,到20世纪90年代,MATLAB已成为国际控制界的标准计算软件。现在MathWorks公司一般每年发布两个版本,上半年a版本,下半年b版本。,.,5,MATLAB的版本一览,1.1Matlab的发展历程,.,6,MATLAB的版本一览(续),1.1Matlab的发展历程,.,7,MATLAB的版本一览(续),1.1Matlab的发展历程,.,8,MATLAB的版本一览(续),1.1Matlab的发展历程,.,9,MATLAB的版本一览(续),1.1Matlab的发展历程,.,10,1.2Matlab的应用领域,MATLAB对许多专门的领域都开发了功能强大的模块集(BLOCKSET)和工具箱(TOOLBOX)。每一个工具箱(MATLAB函数的子程序库)都是由特定领域的专家开发的,用户可以直接使用工具箱来进行相关的设计与研究而不需要自己编写代码。,MATLAB的工具箱主要包括:优化设计、图像与数字信号处理、通信、控制系统、神经网络、模糊逻辑、小波分析、系统仿真、计算生物学和计算金融学等方面的应用。,下面列举MATLAB的部分工具箱以供一览:,.,11,数学与优化OptimizationToolbox(优化工具箱)GlobalOptimizationToolbox(全局优化工具箱)SymbolicMathToolbox(符号工具箱)PartialDifferentialEquationToolbox(偏微分方程工具箱)统计与数据分析StatisticsToolbox(统计工具箱)NeuralNetworkToolbox(神经网络工具箱),Matlab的部分工具箱一览:,.,12,控制系统设计与分析ControlSystemToolbox(控制系统工具箱)SystemIdentificationToolbox(系统识别工具箱)FuzzyLogicToolbox(模糊逻辑工具箱)RobustControlToolbox(鲁棒控制工具箱)信号处理与通信SignalProcessingToolbox(信号处理工具箱)CommunicationsToolbox(通信工具箱)FilterDesignToolbox(滤波器设计工具箱)WaveletToolbox(小波分析工具箱),Matlab的部分工具箱一览:(续),.,13,Matlab的部分工具箱一览:(续),图像处理ImageProcessingToolbox(图像处理工具箱)VideoandImageProcessingBlockset(视频和图像处理模块)ImageAcquisitionToolbox(图像采集工具箱)MappingToolbox(绘图工具箱)计算金融FinancialToolbox(金融工具箱)EconometricsToolbox(经济学工具箱),.,14,图片来源:,.,15,第二部分:Matlab基础及入门,2.1MATLAB的Desktop操作桌面简介,工作空间管理命令:who,whos,clear,save,load,下一张幻灯片,whos-列出工作空间的全部变量详细内容;clear删除内存中的变量和函数;save,load存储和加载变量,.,16,2.1MATLAB的Desktop操作桌面,.,17,2.2简单的范例,矩阵乘法A*B,“演算纸式”的算法语言!,.,18,2.3在线帮助,helpsqrt,help+命令名或函数名(或F1键),更详细的帮助信息,.,19,變量名稱是由英文字母、數字或下劃綫所組成開頭的第一個字母必須是英文字母(切忌数字开头)名稱長度不能超過32個字母會區分變數的大小寫(同C语言)變量不必聲明便可直接使用(不同于C语言),2.4变量的命名规则,关于变量的数据类型:默认情况下,Matlab将所有数值型变量默认为双精度类型,无论输入的是整数还是实数。,.,20,2.5Matlab的保留变量,eps浮点运算误差=2.2204*10-16(最小数)j,i纯虚数Inf无穷大NaN非数(NotaNumber),如0/0pi圆周率ans用于返回结果的缺省变量名nargin所用函数的输入变量数目nargout所用函数的输出变量数目,变量命名时须避免使用保留变量!,.,21,2.6Matlab的数据类型,Matlab中任何数据都以数组的形式存在,数组维数可以是零维(标量),一维、二维、多维,若數組只有一維,稱之為向量(vector)向量可再細分為行向量(rowvector)與列向量(columnvector)數組若是二維,則稱之為矩陣(matrix),实际在Matlab中,列向量被当作只有1列的矩阵;行向量当作只有1行的矩阵;标量则是看作只有1行1列的矩阵。,.,22,2.6Matlab的数据类型,例如:A=int8(12),float,.,23,在计算机内,双精度数需要8个字节(Byte)来存储;至于双精度的复数,则占16个字节(实部和虚部);单精度的实数占4个字节;整数类:int8占1字节,int16占2字节,int32占4字节,int64占8字节;对于字符串,每个字符占2个字节。,A=2;B=rand(1000);C=i*B;whos%查询内存变量NameSizeBytesClassA1x18doublearrayB1000 x10008000000doublearrayC1000 x100016000000doublearray(complex)Grandtotalis2000001elementsusing24000008bytes,分号的另一含义:一个命令行的末尾如果是分号,则结果不显示在屏幕,否则将结果输出到屏幕。,.,24,2.6.1一维数值型数组,Matlab的向量是以一维数组來表示行向量里,元素与元素之间用空格键或逗号隔开列向量以分号隔开(换行),A=1,2,3A=123,A=1;2;3A=123,分号的另一含义:一个命令行的末尾如果是分号,则结果不显示在屏幕,否则将结果输出到屏幕。,.,25,构建一维数组的方法,直接输入(英文状态),A=1,2,3A=123,A=1;2;3A=123,使用冒号“:”创建(格式a:increment:b),x=0:0.1:2*pi;%建立从0到2的行向量,%元素增量0.1y=sin(x);%元素个数和x相同的行向量plot(x,y);%二维绘图函数,画sin函数图像,行向量,列向量,.,26,sin(x)的函数图像,图形窗口,白色区域代表坐标轴内的区域,所有的绘图命令(比如plot)执行后都会自动弹出一个图形窗口显示绘制的图形,.,27,使用linspace(a,b,n)命令(线性采样)创建,x=linspace(0,2*pi,100);%建立从0到2的%行向量,元素数目100y=sin(x);plot(x,y);n=length(x)%查询向量t的长度n=100x=x;%“”共轭转置符号,行向量与列向量%相互转换(注意区别“.”!),.,28,基本的向量处理函数,.,29,2.6.2二维数值型数组,称二维数组为矩阵(matrix)一个mn的矩陣代表矩阵具有m个行n个列要建立矩陣,同一行的元素用空格或逗号隔開,行與行之間用分號隔開,.,30,构建二维数组(矩阵)的方法,使用直接输入,.,31,cat(1,a,b);%沿列维创建,相当于a;bcat(2,a,b);%沿行维创建,相当于a,b,利用命令cat(dim,A,B),Matlab的运算按列优先!(与C语言不同),.,32,利用Matlab提供的函数建立,.,33,(随机数),利用Matlab提供的函数建立(续),.,34,zeros(2,3)ans=000000,eye(3)ans=100010001,diag(1:3)ans=100020003,ones(2,3)ans=111111,利用Matlab提供的函数建立矩阵(续),.,35,利用Matlab提供的函数建立矩阵(续),rand(3)%01间的随机矩阵ans=0.95010.48600.45650.23110.89130.01850.60680.76210.8214,randn(2,3)%正态分布的随机矩阵ans=-0.43260.1253-1.1465-1.66560.28771.1909,.,36,查詢陣列(数组)維度,以及陣列元素個數的函數,t,c=size(rand(2,3)t=2c=3%t返回行数,c返回列数,.,37,2.6.3多维数组,對於三維陣來說,需要列、行與頁(page)三個維度來描述,.,38,建立三維数组,可針對每一頁分別建立二維数组,.,39,2.6.4数组元素的访问,通过元素的下标来访问:A(i,j)访问矩阵A的第i行j列的元素A(i)访问矩阵A的第i个元素,按列优先,注意:与C语言不同,Matlab中数组元素的下标从1开始计算而不是0!,.,40,通过冒号“:”访问:,A(i:k,j)访问矩阵A的第j列的i到k个元素A(:,j)访问矩阵A的第j列元素A(i,:)访问矩阵A的第i行元素,A=diag(1:3);a=A(2,2),b=A(5)a=2b=2,c=A(:,3)c=003,.,41,矩阵加、减、乘、除、求幂、转置,2.6.5矩阵的运算,.,42,矩阵的基本运算函数,.,43,矩阵的左除“”与右除“/”,設,若要求解向量X,則,上式可以寫为X=inv(A)*B,或用A來左除B,即,X=AB,.,44,A.*B对应的元素之间的乘积,元素与元素的运算“.”符号,若,A*Bans=22281312,A.*Bans=68126,.,45,元素与元素的运算“.”符号,t=0:0.01:pi;y=sin(t.3);plot(t,y),在0,内,绘制函数sin(t3)的图像,.,46,2.6.6字符型数组,在Matlab里,字符须放在单引号对中。,c=Hello!c=Hello!,.,47,创建字符数组,month=April;May;June?Errorusing=vertcatAllrowsinthebracketedexpressionmusthavethesamenumberofcolumns.month=April;May;Junemonth=AprilMayJune,创建二维字符数组时,每行字串的长度须相等,如果不等,须补足空格,否则出错。,.,48,字符与数值之间的转换,.,49,a=str2num(123.456)a=123.456b=num2str(123.456)b=123.456class(a)%查询变量的类型ans=doubleclass(b)ans=char,.,50,2.6.7元胞数组(CellArray),元胞数组是Matlab里的一类特殊的数组。元胞数组的每一个元素(cell)可以是不同类型的矩阵、向量、标量、多维数组或结构体。,构建元胞数组方式一,A=cell(2,2);%用cell命令预定义一个2x2的元胞数组A(1,1)=rand(2,3);%是元胞数组的标志A(1,2)=HelloWorld!;A(2,1)=12+2i;,.,51,A(2,2)=1:-1:-9;cellplot(A)%画元胞数组的结构图,.,52,构建元胞数组方式二,A1,1=rand(2,3);A1,2=HelloWorld!;A2,1=12+2i;A2,2=1:-1:-9;,A=rand(2,3),HelloWorld!;12+2i,1:-1:-9;%”续行符,变量名不能分开,注释行不能续行,或者,.,53,元胞数组元素的访问方式,A(1,1),A(1,2),A(2,1),A(2,2),A(1),A(2),A(3),A(4),基本单元(cell)的编址,.,54,c=A(2,2)%对基本单元(cell)的访问,相当于A(4)c=1x11doubled=A2,2%提取单元里的内容d=10-1-2-3-4-5-6-7-8-9class(c)ans=cellclass(d)ans=double,.,55,2.6.8结构体数组(StuctureArray),结构体数组的基本单元(元素)是结构体,结构体只有在划分“域(field)”之后才能使用,数据只能存放在结构体的域中,结构体的域可以存放任何类型的数据。,结构体域的构成:,结构体名.域名,.,56,创建结构体方式1直接创建,=Tom;student.id=u80579;student.score=776988;student%显示结构体student=name:Tomid:u80579score:776988,创建了一个名为student的单结构体,该结构体有3个域:name、id、score,.,57,student(2,3).name=Jerry;student(2,3).id=u80161;student(2,3).score=897890;student%显示结构体student=2x3structarraywithfields:nameidscore,创建一个名为student的2x3的结构体,该结构体有3个域:name、id、score,上述命令在创建2x3结构体的同时,也给数组的第2行3列的元素赋值了。,.,58,Structurearray:Student,结构体,.,59,创建结构体方式2struct命令,格式:S=struct(field1,value1,field2,value2,),DATA(2,3)=struct(name,id,score,)%结构体域的值为空DATA=2x3structarraywithfields:nameidscore,.,60,结构体数组元素的访问,基本单元的访问:被标识的结构体名,student(2,3)%等价于student(6)ans=name:Jerryid:u80161score:897890,.,61,具体内容的访问:带域名的标识结构体名,str=student(2,3).namestr=Jerry%对结构体DATA的域赋值DATA(1,1).name=zhang;DATA(1,1).id=2000185;DATA(1,1).score=887992;,.,62,2.7使用M文件Matlab编程(I),M文件(程序文件)是指Matlab自动生成的后缀名为.m的文件,分为脚本(Script)M文件和函数M文件。,2.7.1脚本M文件,脚本M文件实际上是用户按照自己意图编写的Matlab命令集合(批处理文件),脚本文件运行后,文件中使用的所有变量都驻留在Matlab的工作空间(workspace)中,.,63,建立脚本M文件,方法1.在Matlab桌面点击FileNewM-File,即可打开M文件编辑器,编辑M文件。,.,64,建立脚本M文件,方法2.在命令窗口键入命令edit,可打开M文件编辑器,编辑M文件。,M文件编辑区,edit,.,65,%script1.m,M脚本练习-绘制三维函数图clear%清除内存中的所有变量x=linspace(-6,6,36);y=linspace(-6,6,36);%创建行向量xxyy=meshgrid(x,y);%在x、y的矩形区%内划分网格,输出格点坐标zz=yy./(xx.2+yy.2+1);surf(xx,yy,zz);%绘制三维曲面图命令axistight%把数据范围设为坐标范围,使图形和坐标轴紧凑,M脚本文件的例子:画三维函数z=y/(x2+y2+1)图,“记住随时使用help”,.,66,输入并储存(文件名不能以数字开头)好之后,命令窗口键入脚本文件名script1即可执行该M文件。或者点击编辑器上的“执行”图标。,.,67,双击变量名可查看变量值,脚本文件运行后,文件中所有变量都驻留在工作空间中,.,68,数组编辑器数组zz的元素值,利用数组编辑器,可以创建一个数组并给数组元素赋值。,.,69,lv.2ans=011100111000,.,70,2.7.2函数M文件,函数M文件和脚本M文件都是后缀为.m的Matlab文件,不同之处是:1.函数可以有输入参数,也可以把运算结果传回工作区(输出变量),而脚本文件不行。2.函数M文件内的变量不出现在Matlab的工作空间,它有自己专有的函数空间,它与工作空间的通信只是通过函数的输入和输出变量。,.,71,函数M文件的基本结构,.,72,Help命令显示内容,.,73,简单的范例,函数myfunc1可接收两个输入参数,并返回两者的和,functiontotal=myfunc1(x,y)%MYFUNC1sumoftwonumbersorvectors.%MYFUNC1(X,Y)computesX+Yandreturns%theresult.%XandYcanbescalarsorvectors.total=x+y;%函数体,编辑后保存文件时,文件名和函数名必须相同。,.,74,补充说明:,函数可以没有输出变量,也可以多于1个输出变量。当有一个以上的输出时,输出变量包含在括号内,如V,D=eig(A);t,c=size(A)函数外部不能调用函数内的变量,函数内也不能调用函数外部的变量。函数与外界唯一的联系就是输入和输出,函数内对外界是“不可见的”。函数的参数无需定义类型(与c语言不同)。,.,75,myfunc1(3,5)ans=8helpmyfunc1MYFUNC1sumoftwonumbersorvectors.MYFUNC1(X,Y)computesX+Yandreturnstheresult.XandYcanbescalarsorvectors.,带参数运行,.,76,2.7.3子函数,同一个M文件里可以撰写多个函数;一个M文件里只能有一个主函数,其他的是子函数;子函数只能被同一文件里的主函数调用,或其他的子函数调用子函数的撰写格式和主函数一样保存文件时所用名字和主函数相同,.,77,functionmyfunc2(v)%主函數subf(v);fprintf(Endofmainfunctionn);%格式化输出functionsubf(n)%子函數fprintf(sum(n)=%gn,sum(n)fprintf(prod(n)=%gn,prod(n),myfunc2(12345)sum(n)=15prod(n)=120Endofmainfunction,subf(12345)?Undefinedcommand/functionsubf.,.,78,2.7.4M文件的调试,.,79,当程序执行到断点处,会在命令窗口显示“K”,此时可以检查和修改(函数)工作空间的变量值。,键入return后,可继续运行到程序结束。,.,80,2.8匿名函数,匿名函数(anonymousfunctions)是一个可以在Matlab的命令窗口里直接定义的函数,而不用把函数写在M文件里。,匿名函数的定义,.,81,f=(x)sin(2*x).*exp(-x/2);f(2.3)ans=0.0748fplot(f,0,2*pi),范例,helpfplotFPLOTPlotfunctionspecifiedbystring.FPLOT(FUN,LIMS)plotsthefunctionFUNbetweenthex-axislimitsspecifiedbyLIMS=XMINXMAX.UsingLIMS=XMINXMAXYMINYMAXalsocontrolsthey-axislimits.,.,82,输出图形,.,83,2.9流程控制结构Matlab编程(II),循环语句、条件语句、开关语句的结构,2.9.1循环结构,.,84,FOR循环的语法,.,85,%script2.mtotal=0;fornum=2:100%向量,增量1ifisprime(num)total=total+num;endendfprintf(sum=%dn,total),script2sum=1060,例1:利用for循环计算2100之间所有质数的和,isprime内建函数,判断一个数是否质数,.,86,%script3.mfori=12;34%矩阵i%在命令窗口显示变量i的值end,script3i=13i=24,例2,.,87,WHILE循环的语法,当无法事先知道循环该执行多少次时,可以考虑使用while循环。其语法如下:,.,88,两类表达式:,关系表达式:通过关系运算符联系的表达式。常用的关系运算符有大于;=大于等于=等于;=不等于逻辑表达式:通过逻辑运算符联系的表达式。常用的逻辑运算符有num=2;whilenumscript4sum=1060,例子,.,90,使用break和continue命令,若要中断循环的执行,可使用break与continue命令(以for循环为例):,.,91,.,92,2.9.2if-else-end条件语句,有3种常用的使用方式:,.,93,例子:参见例script4.m,.,94,2.9.3switch-case开关结构,.,95,若case后面的检测值不止一个时,可用大括号将它们括起来,如:,functionmyfunc3(method)switchmethod%method为字串caselinear,bilineardisp(linear/bilinearmethod)casecubicdisp(Cubicmethod)%屏幕显示命令otherwisedisp(Unknownmethod)end,myfunc3(bilinear)linear/bilinearmethodmyfunc3(newton)Unknownmethod,.,96,2.10数据可视化,MATLAB不仅在数值计算方面独占鳌头,而且在数据可视化方面也是功能强大。MATLAB可以给出数据的二维、三维甚至四维的图形表现。通过对图形的线型、立面、色彩、渲染、光线、视角等的控制,可以把数据的特征表现的淋漓尽致。下面介绍几个常用的二维、三维绘图函数。,.,97,2.10.1二维图形,在二维曲线图的绘制命令中,最重要、最基本的命令就是plot,其常用的调用格式如下:,1.plot(X,Y,s)若X、Y为同维向量,则分别以X、Y中的元素为横、纵坐标绘制曲线;若X为向量,Y是有一维和X等维的矩阵,则绘制多个不同色彩的曲线,曲线数等于Y的另一维;若X为矩阵,Y为向量,情况和上相同;若X,Y为同维矩阵,则以X,Y对应的列元素为横、纵坐标绘制曲线族,曲线条数等于矩阵的列数;s是字串,用来指定线型、色彩的选项。各种可选项如下表所示,.,98,以上各选项可用helpplot命令随时索取!,.,99,%创建脚本M文件(程序),下同t=0:0.01:pi;y=sin(t.3);plot(t,y,r-d)axis(03.5-11);%指定轴的范围xlabel(t,FontSize,12);ylabel(sin(t3),FontSize,12);%给x、y轴打上标记,同时指定12号字体,例:在0,内,绘制函数sin(t3)的图像,.,100,.,101,2.plot(X1,Y1,s1,X2,Y2,s2,),同时绘制多个曲线,每个绘线三元组(X,Y,s)的结构和作用与plot(X,Y,s)相同,不同的是三元组之间可以互不相关。,.,102,t=0:pi/50:4*pi;y0=exp(-t/3);y=exp(-t/3).*sin(3*t);plot(t,y,-r;t,y0,:b,t,-y0,:b)grid,.,103,2.10.2三维图形,三维曲线图plot3函数调用格式:plot3(X1,Y1,Z1,s1,X2,Y2,Z2,s2,.)除包含第三维之外,用法与plot函数相同。,%M文件t=(0:0.02:2)*pi;x=sin(t);y=cos(t);z=cos(2*t);plot3(x,y,z,b-,x,y,z,bd)view(-82,58)%调整视角xlabel(sint,FontSize,12),ylabel(cost,FontSize,12),zlabel(cos2t,FontSize,12)legend(链,宝石)%加图例,.,104,.,105,MATLAB的三维网格图的形成原理:在x-y平面上指定一个矩形区域,采用与坐标轴平行

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论