收藏 分销(赏)

第2章MATLAB语言程序设计.ppt

上传人:s4****5z 文档编号:14005550 上传时间:2026-05-26 格式:PPT 页数:46 大小:479KB 下载积分:10 金币
下载 相关 举报
第2章MATLAB语言程序设计.ppt_第1页
第1页 / 共46页
第2章MATLAB语言程序设计.ppt_第2页
第2页 / 共46页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,第,2,章,MATLAB,语言程序设计基础,2.1,MATLAB,语言数据类型,2.2,数值运算,2.3,符号运算,2.4,MATLAB,语言程序控制结构,2.5,M,文件概述,2.,6,MATLAB,图形绘制,2.7,实例解析,本章目标:了解,MATLAB,语言程序设计及图形绘制的基本内容,2.1 MATLAB,语言数据类型,MATLAB,支持的基本数据类型见下图。,MATLAB,的数据类型,一、变量与常量,变量是任何程序设计语言的基本元素之一,它是指其数值在数据处理的过程中可能会发生变化的一些数据量名称。而常量则是指在计算过程中数值不发生变化的量。,MATLAB,语言变量有如下特点:不要求对所使用的变量进行事先声明,也不需要指定变量类型,,MATLAB,会自动根据所赋予变量的值或对变量所进行的操作来确定变量的类型;在赋值过程中,如果变量已经存在,,MATLAB,会用新值代替旧值,并以新的变量类型代替旧的变量类型。,如果没有事先声明,,MATLAB,中的变量指的是局部变量。此外用户还可以使用,global(),函数来定义全局变量,全局变量可以用于不同函数文件之间的传递,但也正是由于全局变量的这种特性使得程序的可读性降低甚至容易出错,所以建议读者一般不要使用全局变量。,MATLAB,语言中还有一些预定义的变量,这些变量即称为常量。,下表列出了,MATLAB,语言中常用的几个常量。,常量名,常量值,常量名,常量值,i,j,realmin,最小的正浮点数,2.2251e-308,pi,realmax,最大的正浮点数,1.7977e+308,eps,浮点运算相对精度,2.2204e-016,Inf,或,inf,无穷大,(,如,1/0),NaN,或,nan,不定值,(,如,0/0,/,0),注:,NaN,与,Inf,的乘积仍为,NaN,。,二、数值型数据,数值型数据包括整数,(,带符号和无符号,),和浮点数,(,单精度和双精度,),。,在缺省,(,默认,),状态下,,MATLAB,将所有的数都看作是双精度的浮点数。,使用整型变量和单精度变量可以节约内存空间。,三、符号型数据,符号型数据是一般科学计算软件所不具有的,它可以用于公式的推导,和数学问题的解析解法。在进行解析运算前需要首先将采用的变量申明为,符号变量,这需要用,syms,(),函数实现。,例如:,syms,a b;,四、字符串,字符与字符串运算是各种高级语言不可缺少的部分,它可以用来表示,一些,MATLAB,函数的属性值,并用于显示中英文内容等。,MATLAB,具有强,大的字符处理能力。,1,、字符串的定义,MATLAB,提供了以下几种方法来定义一个字符串:,直接用单引号赋值;,利用,char(),函数结合,ASCII,码来生成字符串,(,因为字符串中的字符,是以,ASCII,码存储的,所以大小写是有区别的,可以用,double(),函数,或,abs(),函数查看一个字符串的,ASCII,码,),;,利用字符数组生成字符串。例如:用户可以在命令窗口中输入如下语句:,s1=I love,matlab,%,方式,1,s2=char(73 32 108 111 118 101 32 109 97 116 108 97 98)%,方式,2,s3=I,l,o,v,e,m,a,t,l,a,b,%,方式,3,2,、字符串的连接,字符串可以利用“,”,运算符进行拼接,不过拼接字符串时需要注意以下两点:,若使用“,”作为不同字符串之间的间隔,则相当于扩展字符串成为更长的字符串向量。,若使用“;”作为不同字符串之间的间隔,则相当于扩展字符串成为二维或者多维的数组,这时,不同行上的字符串必须具有同样的长度,,此外还可以利用,MATLAB,提供的函数实现字符串的拼接:,strcat(),函数实现字符串水平连接,strvcat(),函数实现字符串垂直连接,五、元胞与结构体型数据,1,、元胞数组,用户可以使用以下两种方法来建立一个元胞数组。用赋值语句直接定义;由,cell(),函数预先分配存储空间,然后对细胞的每个元素逐个赋值。,元胞数组中元素一般可以用,Am,n,或,A(m,n,),这两种方式来调用,它们的不同之处在于:,Am,n,得到的结果的类型为元素自身的类型,而,A(m,n,),的数据类型为元胞数组类型。,2,、结构数组,结构体是,MATLAB,中比元胞数组更广义的数组,它的每一个元素都称为域,,域中可以存放任意类型的数据结构。与其他数组不同的是结构数组用域名来调,用域的内容。结构数组具有层次数据结构,它可以描述一个班级下的每个学生,的姓名、性别、课程和得分这样的层次结构。该层次的结构可以存放广泛的数,据类型,如典型的,MATLAB,图形结构就是用结构数组来组织的,由屏幕、菜单、,图形和修饰图形的元素自上而下这样的层次组成。,同元胞数组类似,结构数组的创建也有两种方法:,用赋值语句直接定义;,用结构函数,structure(),来直接产生。,六、不同数据类型之间的转化,MATLAB,提供了丰富的函数来实现常用数据类型间的转换,具体见下图。,注:上图中的,S2N,包括:,str2int,str2num,str2mat,sscanf,等;,N2S,包括:,int2str,num2str,mat2str,sprintf,等。,2.2,数值运算,一、矩阵及其运算,MATLAB,中是以矩阵作为基本编程单元的,所以矩阵运算十分重要。,1,、,矩阵的输入,在,MATLAB,中,输入矩阵可有以下几种方法:,输入元素列表;,(a=1 2 3;4 5 6;7 8 9),从外部数据文件中读取矩阵;,(load,data.mat,),利用,MATLAB,内部函数与工具箱函数产生矩阵;,(a=eye(4),用户自己编写语句产生矩阵。,(r=5-10*rand(2,3),2,、矩阵的基本运算,矩阵的基本运算主要包括矩阵的代数运算、逻辑运算和关系运算。代数运算主要包括,矩阵转置,(,通过“”或,transpose,函数实现,),、,矩阵加,(+),、,减,(-),、,乘,(*),、,除,(,左除,”,,右除,”/,“,),、,乘方,(),和,点,(.),运算;逻辑运算包括,与,(&,和,&),、,或,(|,和,|),、,非,(),和,异或,(,xor,),;关系运算包括,等于,(=),、,不等于,(=),、,大于,(),、,小于,(),、,不大于,(=),。,二、多项式及其运算,1,、多项式的构造,MATLAB,中构造多项式主要通过函数,poly2sym(),和,poly2str(),实现,这两个函数的调用格式如下:,poly2sym(C,V),poly2str(C,V),其中,,C,为多项式系数向量,按降幂排列,,V,为指定的变量,对于,poly2sym(),函数,,V,的默认值为,x,,而对于,poly2str(),函数,V,必须指定。,2,、多项式的基本运算,多项式的基本运算包括,加,(+),、,减,(-),、,乘,(,conv,),、,除,(,deconv,),、,微分,(,polyder,),、,积分,(,polyint,),、,估值,(,polyval,),和,求根,(roots),。,三、复数及其运算,1,、复数绘图,对于复数函数的绘图主要有两种形式。一种是直角坐标图,(,plot,),,即分别以复数的实部和虚部为坐标作出复数的表示图;另一种为极坐标图,(polar),,即以复数的模和幅角为坐标作图。,例如:编写如下语句:,t=0:0.1:2*pi;,y=t+i*t.*sin(t);,r=abs(y);theta=angle(y);%,求极半径和极角,%,theta,r,=cart2pol(t,t.*,sin(t,);,subplot 121,plot(y),title(,直角坐标图,),subplot 122,polar(theta,r),title(,极坐标图,),输出结果如右图所示。,2,、复数的基本运算,复数的基本运算包括求复数的实虚部、幅值和,相角以及其共轭复数等。相关的操作函数为:,real,,,imag,,,abs,,,angle,和,conj,。,3,、留数的计算,由复变函数课程的学习可知,留数的计算可以最终归结为极限的计,算,下面仅介绍留数在,MATLAB,中的求解。相关的实现语句如下:,c=,limit(F,*(z-z0),z,z0)%,单奇点,c=,limit(diff(F,*(z-z0)m,z,m-1)/prod(1:m-1),z,a)%m,重奇点,这里需要对上述两个函数作一点说明:,limit(),函数是求极限的函数,,prod(),函数是求连乘的函数。例如:,syms,x;,limit(sin(x)/x,),ans,=1,prod(1 3 6 4 7),ans=504,2.3,符号运算,一、符号微积分,1,、符号极限,MATLAB,语言的符号运算工具箱提供的,limit(),函数可以用来求解极限问题。其具体调用格式如下:,L=,limit(F,x,a,),L=,limit(F,x,a,right,或,left),其中,,F,为极限表达式且必须为符号表达式;,x,为符号自变量,求解之前应先用,syms,x,声明,若,x=,findsym(F,),则可省略;,a,为极限点,可以是一个确定的值、函数或无穷;,right,或,left,是单边极限的定义,给出左右选项。,2,、符号导数,如果函数和自变量都已知,且均为符号变量,则可以用,diff(),函数解出给定函数的各阶导数,该函数的调用格式为:,dF,=,diff(F,x,n,),其中,,,n,为求导的阶次,缺省值为,1,。其余参数同,limit(),函数。,3,、符号积分,MATLAB,符号运算工具箱中提供的,int,(),函数可以直接用来求取积分问题的解析解。该函数的常用调用格式为:,I=,int(f,x,)%,求不定积分,I=,int(f,x,a,b,)%,求定积分,其中,f,为被积函数,,x,是自变量,,a,b,是积分区间,,可以为确定的值,,,函数或无穷。,4,、符号级数,级数展开,单变量函数的,Taylor,幂级数展开,单变量函数的,Taylor,幂级数展开可以用符号工具箱的,taylor(),函数直接导出,其调用格式为,r=taylor(f,x,n,a),其中,f,为,函数的符号表达式,,x,为符号自变量,若函数只有一个自变量,则,x,可以省略,,n,为需要展开的项数,默认值为,6,,,a,为函数展开点,表明需要获得关于,x=a,的幂级数展开,,a,的默认值为,0,。,多变量函数的,Taylor,幂级数展开,MATLAB,并未提供计算多变量函数,Taylor,幂级数展开的直接函数,但它可以调用,maple,语言中的,mtaylor,(),函数来直接求取多变量函数的,Taylor,幂级数展开。该函数的调用格式如下:,T=maple(mtaylor,f,x1,x2,.,xn,n)%,格式,1,T=maple(mtaylor(f,x1,x2,.,xn,n)%,格式,2,T=maple(mtaylor,f,x1=a1,x2=a2,.,xn=an,n)%,格式,3,T=,maple(mtaylor(f,x1=a1,x2=a2,.,xn=an,n)%,格式,4,其中格式,1,与格式,2,等价,格式,3,与格式,4,等价,格式,1,与格式,2,主要用于求解原点处的,Taylor,展开,格式,3,和格式,4,主要用于求解,(,a1,a2,.,an),处的,Taylor,展开,,n-1,为展开的最高阶次。,Fourier,级数展开,给定周期函数 ,其中 ,,我们可以人为地对该函数在其他区间上进行周期延拓,使得,这样可以根据需要将其写成下面的级数形式:,其中,该级数称为,Fourier,级数。根据上述公式这里编写了函数,fseriessym,和,fseriesquadl,来求解函数的,Fourier,级数展开。具体的源文件参看教材。,级数的求和,MATLAB,符号运算工具箱提供的,symsum(),函数可以用于求解已知通项的有穷或无穷级数的和。,该函数的调用格式为:,r=symsum(s,v,a,b),,其中,,s,为级数的通项,,v,为级数自变量,,a,和,b,为,级数求和的起始项和终止项,并可以将起始项或终止项设置成无穷量,inf,。如果,s,变量中只含有,一个变量,则在函数调用时可以省略,v,。,5,、符号积分变换,Fourier,变换,及其逆变换,MATLAB,提供了专门的,Fourier,变换的求解函数:,fourier(),和,ifourier(),。这两个函数的调用格式如下:,Fw=fourier(ft,t,w),ft=ifourier(Fw,w,t),Laplace,变换及其逆变换,MATLAB,中提供了专门的,Laplace,变换求解函数:,laplace(),和,ilaplace(),。这两个函数的调用格式如下:,Fs=laplace(ft,t,s),ft=,ilaplace(Fs,s,t,),Z,变换及其逆变换,MATLAB,中提供了专门的,Z,变换求解函数:,ztrans,(),和,iztrans,(),。这两个函数的调用格式如下:,FZ=ztrans(fn,n,z),fn=iztrans(FZ,z,n),二、符号方程的求解,1,、,符号代数方程的求解,一般代数方程包括线性,(Linear),、非线性,(Nonlinear),和超越,(Transcendental),方程等,,MATLAB,提供了统一的求解函数,solve(),,该函数的调用格式为:,S=solve(eqn1,eqn2,eqnn,v1,v2,.,vn)%,格式,1,S=solve(eqn1,eqn2,eqnn,v1,v2,.,vn)%,格式,2,x1,x2,xn=solve(eqn1,eqn2,eqnn,v1,v2,.,vn)%,格式,3,其中,,,eqni,是第,i,个方程的符号表达式,,,vi,是第,i,个符号变量,,格式,1,和格式,2,中的,S,是一个结构数组,要显示出显式解,可通过,S.v,i,得到。,2,、符号微分方程的求解,MATLAB,提供了,dsolve(),函数求解微分方程。该函数允许用字符串的形式描述微分方程及初值、边值条件,最终将给出微分方程的解析解。该函数的调用格式为:,sols=dsolve(eq1,eq2,.,cond1,cond2,.,v)%,格式,1,sols=dsolve(eq1,eq2,.,cond1,cond2,.,v)%,格式,2,其中,eqi,表示微分方程组的第,i,个表达式;,condi,是第,i,个初始条件,,v,是,eqi,中指定的符号自变量(缺省变量为,t,)。,2.4 MATLAB,语言程序控制结构,一、顺序结构,顺序结构是指按照程序中语句排列顺序一次执行,直到程序的最后一个语句。,这是最简单的一种程序结构,一般涉及数据的输入,数据的计算或处理,数据的输,出等内容。,1,、,数据的输入,从键盘上输入数据,可以使用,input(),函数,该函数的调用格式为:,user_entry,=,input(prompt,)%,格式,1,user_entry,=,input(prompt,s,)%,格式,2,其中,,prompt,是提示信息,比如提示输入某某参数等,,s,用于指定输入内容为一个字符串。,2,、数据的输出,MATLAB,提供的命令窗口输出函数主要是,disp,(),和,fprintf,(),函数。,disp,(),函数的调用格式为:,disp(X,),其中,,X,是需要输出的内容,可以是字符串,也可以是矩阵。,fprintf,(),函数的使用方法类似于,C,语言中的,printf,(),函数,但有些参数的含义有细微差别,读者可自行摸索。,2.4.2,选择结构,条件语句,MATLAB,中,条件语句由,if.end,语句实现,,if.end,一般有以下三种使用形式:,单分支,if,语句,双分支,if,语句,多分支,if,语句,其执行语句组如下:,if,条件,语句组,end,if,条件,语句组,1,else,语句组,2,end,if,条件,1,语句组,1,elseif,条件,2,语句组,2,.,elseif,条件,n,语句组,n,else,语句组,m,end,单分支,双分支,多分支,开关语句,开关语句根据表达式的取值不同,分别执行不同的语句,其语句格式为:,switch,开关表达式,case,表达式,1,语句组,1,case,表达式,2,语句组,2,.,case,表达式,n,语句组,n,otherwise,语句组,m,end,三、循环结构,1,、,for,语句,for,语句的一般语句格式为:,其中,,V,是一个向量,循环变量每次从向量,V,中取一个值,执行一次循环体语句,如此下去,,直至执行完,V,向量中的所有分量,将自动结束循环体的执行。,2,、,while,语句,while,语句的一般语句格式为:,其中,条件为真时,执行循环体语句。,for,循环变量,=V,循环体语句,end,while(,条件,),循环体语句,end,四、试探结构,试探结构是,MATLAB,独有的一种语句结构,它主要用来对异常情况进行处理,其一般语句格式为:,在执行程序时,该语句结构首先试探性地执行语句段,1,,如果语句段,1,出现错误时,控制语句,catch,就会捕获它,并执行相应的语句段,2,。,try,语句段,1,catch,语句段,2,end,五、递归结构,程序调用自身的编程技巧称为递归,(recursion),,它是一种在程序设计语言中广泛使用的算法,但同时递归结构也是比较难理解和掌握的。递归结构可以使程序变得简洁,但是程序可读性降低,同时程序的运行效率也比较低。,2.5 M,文件概述,一、,M,文件编辑器,MATLAB,的,M,文件是一个文本文件,可以通过任何编辑器来建立与编辑,最为方便,的是使用,MATLAB,提供的,M,文件编辑器,(Editor),。建立一个新的,M,文件可以有以下几,种方法:,单击菜单命令,File-New-Blank M-file,在,MATLAB,命令窗口中输入命令,edit,创建,单击,MATLAB,窗口上的 图标创建,打开一个已有的,M,文件也相应的有以下方法:,单击菜单命令,File-Open,,从弹出的对话框中选定所需打开的,M,文件,在,MATLAB,命令窗口中输入命令:,edit,文件名,单击,MATLAB,窗口上的 图标,再从弹出的对话框中选定所需打开的,M,文件,二、,M-,脚本文件,M-,脚本文件的执行方式很简单,用户只需在,MATLAB,的提示符“,”,下键入该,M,文件的文件名,,MATLAB,就会自动执行该,M,文件中的各条语句。,M-,脚本文件运行产生的变量都驻留在,MATLAB,的工作空间,(Workspace),中,这样可以很方便地查看变量,但值得注意的是,M-,脚本文件中的变量都是全局变量,因此要十分注意避免变量的覆盖而造成程序出错。,三、,M-,函数文件,M-,函数文件是由,function,语句引导,其基本结构为:,其中,以,function,开头的一行为声明行,表示该,M,文件是一个函数文件。函数名的命名规则与变量名相同。函数可以没有输出参数,当只有一个输出参数时,可以不加方括号,(),,函数一般至少有一个输入参数。,M-,函数文件在运行过程中产生的变量都存放在函数本身的工作空间,当文件执行到最后一行或遇到“,return”,命令时,就结束函数文件的运行,同时函数工作空间中的变量被清除。,function ,输出变量列表,=,函数名,(,输入变量列表,),注释说明部分,函数体语句,四、几个特殊函数,1,、,inline(),函数,inline(),函数的一般调用格式为:,fun=inline(expr)%,格式,1,fun=inline(expr,arg1,arg2,.)%,格式,2,fun=inline(expr,n)%,格式,3,其中,,expr,是任何本身有效的字符串表达式,,arg1,arg2,.,是出现在,expr,中的所有变量的名字,格式,3,是将字符串表达式转换为输入变量为,x,P1,P2,.,Pn,生成的内联函数。,2,、匿名函数,匿名函数是自,MATLAB 7.0,版起给出的一种全新的函数描述形式,其描述格式类似于,inline(),函数,但又比,inline(),函数更简洁,更容易使用,而且效率也更高。匿名函数的一般使用格式为:,fun=(arg1,arg2,.)expr,其各参数的含义与内联函数中的相同。,3,、,feval,函数,MATLAB,提供的,feval,(),函数是用来执行函数操作的函数,故有“函数的函数”之称,其一般调用格式为:,y1,y2,.=feval(fhandle,x1,.,xn),y1,y2,.=feval(function,x1,.,xn),其中,,,fhandle,是函数句柄,,,函数句柄是一种数据类型,,,以,“,”,来引导,,,例如,“,sin”,;,function,是函数名,,,x1,x2,.,xn,是输入参数,,,相应的,y1,y2,.,yn,是输出参数。,2.,6,MATLAB,图形绘制,一、图形窗口简介,在,MATLAB,下建立一个图形窗口可由函数,figure(),来完成,或者可以选择“,File”,菜单下的“,New Figure”,命令来建立图形窗口。每执行一次该命令就产生一个图形窗口,,MATLAB,会自动在这些窗口的名字上依次添加序号(,Figure 1,Figure 2,)作为区别,但是函数,figure(),可指定创建窗口的编号,其常见的用法如下:,figure(n,)%,格式,1,figure(PropertyName,PropertyValue,.)%,格式,2,其中格式,1,是用于创建标号为,n,的图形窗口,格式,2,是创建一个图形窗口对象并设置其相关属性。常用图形窗口对象的属性及属性名见表,2-14,。,MATLAB,还提供了函数,close(),关闭图形窗口。该函数的调用格式为:,close(h,)%,关闭句柄为,h,的图形窗口,默认值为,gcf,close name%,关闭指定名称的图形窗口,close all%,关闭所有的图形窗口,另外,,MATLAB,还提供了一个分割图形窗口的函数,subplot,,该函数的调用格式主要有:,subplot(m,n,p,)%,格式,1,subplot(mnp,)or subplot,mnp,%,格式,2,subplot(Position,left,bottom width height)%,格式,3,其中,格式,1,和格式,2,的功能是将当前图形窗口分成,mn,个绘图区,,m,和,n,分别表示图形窗口中子图的行数和列数,,p,表示子图的序号,(,序号按行优先编号,),,格式,2,是格式,1,的省略写法,(,因为格式,2,只适合,m,n,和,p,均为一位整数的情况,),,格式,3,的功能是在指定的位置绘制坐标轴,,left,和,bottom,是坐标轴坐下角点的位置坐标,(,相对于整个,Figure,空白区域的比例,),,,width,和,height,是坐标轴的宽和高。,二、二维图形的绘制,MATLAB,提供了具有不同功能的二维图形绘制函数。它们以不同的方式来表现各种,数据的涵义,这些涵义的不同本身就体现在曲线的外观上。具体的函数如下表:,函数,plot(),、,semilogx,(),、,semilogy,(),和,loglog,(),可以用来绘制一般的曲线,它们的用法完全一致,只是曲线的外观有所不同,这几个函数的共同调用格式为:,function_plot(Y,)%,格式,1,function_plot(X,Y,LineSpec,.)%,格式,2,function_plot(X,Y,PropertyName,PropertyValue,.)%,格式,3,其中,,function_plot,是函数,plot(),、,semilogx,(),、,semilogy,(),和,loglog,(),的统一描述。,函数名,说明,函数名,说明,plot,绘制线性比例的二维曲线,semilogx,绘制,x,轴为对数比例的曲线,plotyy,绘制双,y,轴曲线,semilogy,绘制,y,轴为对数比例的曲线,line,绘制线性比例的二维或三维曲线,loglog,绘制双对数比例的二维曲线,三、三维图形的绘制,三维图形主要包括三维曲线图和三维曲面图。,MATLAB,中也就图形形式的不同给出,了不同的图形绘制函数,具体如下:,1,、三维曲线图的绘制,MATLAB,提供的绘制三维曲线的函数主要有,line(),和,plot3(),。这两个函数的调用格式类似于,plot(),。下面仅简要介绍,plot3(),函数的用法,,plot3(),函数的调用格式为:,plot3(X1,Y1,Z1,LineSpec,.),%,格式,1,plot3(X1,Y1,Z1,PropertyName,PropertyValue,.),%,格式,2,2,、三维网格图的绘制,MATLAB,提供的,mesh(),函数可以绘制三维网格图,其调用格式为:,mesh(Z)%,格式,1,mesh(X,Y,Z)%,格式,2,mesh(X,Y,Z,C)%,格式,3,mesh(X,Y,Z,PropertyName,PropertyValue,.)%,格式,4,另外,,MATLAB,还提供了,surf,函数来绘制着色表面图,该函数的调用方法和,mesh,函数类似,这里不再赘述。,四、图形修饰,1,、图形标注,图形标注主要包括坐标轴窗口标注、图题标注、坐标轴的标注和图例标注。,坐标轴窗口标注,text(),函数和,gtext,(),函数都是用来在坐标轴窗口标注内容,不同的是,gtext,(),函数只能用来标注二维图形,而,text(),函数则不然。它们的调用格式为:,text(x,y,string,)%,格式,1,text(x,y,z,string,)%,格式,2,text(x,y,z,string,PropertyName,PropertyValue,.)%,格式,3,gtext(string,)%,格式,4,gtext(string1,string2,string3,.)%,格式,5,gtext(string1;string2;string3;.)%,格式,6,其中,x,y,z,是标量或长度相等的向量,,string,是要添加的字符串。,图例添加,legend(),函数用来为图形添加图例,它的调用格式很多,下面就其中几种常见的调用格式加以说明:,legend(string1,string2,.)%,格式,1,legend(h,string1,string2,.)%,格式,2,legend(mode),或,legend mode,或,legend(axes_handle,mode)%,格式,3,legend(.,pos)%,格式,4,其中,,string1,string2,.,是要标注的字符串,,坐标轴标注,xlabel,(,ylabel,和,zlabel,)函数用于坐标轴的,x,(,y,和,z,)轴的标注,这,3,个函数的用法完全相同,这里仅以函数,xlabel,函数为例介绍其使用方法,其调用格式为:,xlabel(string,PropertyName,PropertyValue,.),其中,,string,是所要标注的字符串,,PropertyName,和,PropertyValue,是设置的属性及属性值,它们必须成对出现,常见的有字体,字号等。,标题添加,title(),函数,用于给图形添加标题,并对标题设置若干属性。其调用格式为:,title(string,PropertyName,PropertyValue,.),其各参数的含义同于,xlabel(),函数。,基本图形的绘制,annotation(),函数可以用来绘制线段、箭头、双向箭头、文本箭头、文本框、椭圆和矩形等基本图形,其调用格式为:,annotation(annotation_type,x,y,)%,格式,1,annotation(annotation_type,x,y w h)%,格式,2,annotation(.,PropertyName,PropertyValue,.)%,格式,3,2,、图形编辑,MATLAB,中通过一些低级绘图指令可以很好的控制和绘制一些精细的图形。它主要通过,set,和,get,函数实现,这两个函数分别用来查询和设置相关属性,它们的调用格式为:,returned_value,=,get(object_handle,PropertyName,)%,查询句柄为,object_handle,的图形对象元素的,PropertyName,属性取值,返回给,returned_value,set(object_handle,PropertyName,NewPropertyValue,)%,将句柄为,object_handle,的图形对象元素的,PropertyName,属性取值设置为“,NewPropertyValue,”,五、函数绘图,MATLAB,提供了一些根据函数表达式来绘制图形的函数,它们可以很容易地实现符号表达式的图形化。,具体介绍如下:,1,、,fplot,函数,fplot,函数通过其内部的自适应算法来动态决定自变量的间隔,,其一般,调用格式为:,fplot(fun,limits,LineSpec,)%,格式,1,fplot(fun,limits,tol,LineSpec,)%,格式,2,fplot(fun,limits,n,)%,格式,3,fplot(fun,limits,tol,n,LineSpec,p1,p2,.)%,格式,4,其中,,fun,是需要绘制曲线的函数名称;,limits,表示绘制图形的坐标轴取值范围,可以有两种方式:,xmin,xmax,表示图形,x,坐标轴的取值范围,,xmin,xmax,ymin,ymax,表示,x,y,坐标轴的取值范围;,tol,表示函数相对误差精度,其默认值为,2e-3,,,n,用于指定绘图的最少点为,n+1,,因此最大步长为,(,xmax-xmin)/n,,,n,的默认值为,1,,,LineSpec,用于指定曲线的线型、颜色和标记符号等,,p1,p2,.,是函数,fun,的附加参数。,2,、,ezplot,函数,MATLAB,提供的,ezplot(),函数可以直接画出字符串函数或符号函数的图形。该函数的调用格式为:,ezplot(fun,min,max,)%,格式,1,ezplot(fun,xmin,xmax,ymin,ymax,)%,格式,2,ezplot(funx,funy,tmin,tmax,)%,格式,3,ezplot,(.,figure_handle,)%,格式,4,其中,fun,是输入函数名或表达式,可以为一元函数或隐函数,当,fun,是 的形式时,,min,max,是自变量的取值范围,其默认值为 ,当,fun,是的形式时,,min,max,满足,minx,max,min,ymax,;,xmin,xmax,ymin,ymax,用于指定横纵坐标的范围,其默认值为 ;,funx,funy,是参数方程的表达式,,tmin,tmax,用于指定参数方程自变量的范围,其默认值为 ;,figure_handle,是指定的图形窗口,默认值为当前图形窗口。,类似地,,MATLAB,提供的,ezplot3(),函数可以用来绘制三维参数曲线,其具体调用格式为:,ezplot3(funx,funy,funz,tmin,tmax,animate),其中,animate,用来设置动画的绘制曲线过程,可省略。,3,、,ezcontour,函数,ezcontour(),函数是根据函数表达式来绘制等高线的,其调用格式为:,ezcontour(fun,domain),ezcontour(fun,domain,n),其中,fun,表示函数的表达式,;,domain,表示绘制图形的坐标轴取值范围,,,可以有两种方式,:,min,max,表示,minxmax,minymax,,,xmin,xmax,ymin,ymax,表示,xminxxmax,yminy1,时相邻的,bar,之间就会存在重叠的情况,,width,的默认值为,0.8,,,style,用于指定条形图的分布方式,它有以下几个选项:,grouped,排列型条形图(默认值),stacked,堆型条形图,bar_color,是一个单字符,用于指定所有条形图的颜色,可选值为表,2-16,中颜色栏的所有颜色值,其他的颜色需要通过句柄来设定。,2,、面积图,面积图适用于绘制连续数据,从面积图绘制的图形中我们可以很直观地看到各个数据在总和中所占的比例,所以它特别使用于商业统计。,MATLAB,专门提供了命令,area,来绘制面积图,它的调用格式为:,area(Y,),area(X,Y,),area(.,basevalue,),area(.,PropertyName,PropertyValue,.),其中,,area(X,Y,),的执行过程为先调用,plot(x,y,),,然后根据当前的颜色映像,用均匀分布的颜色进行填充,,basevalue,是指定填充时到达的最小,y,坐标。缺省时,basevalue,=0,,即填充到,x,轴为止;参数,PropertyName,和,PropertyValue,为,area,生成的图形指定属性值,例如表面颜色(,facecolor,)、边缘颜色(,edgecolor,)和线宽(,linewidth,)等。,3,、饼图,饼图用于显示向量中的元素占向量元素总和的百分比,不仅直观,而且很美观。,MATLAB,中提供了函数,pie(),和,pie3(),分别用于绘制二维和三维饼图。它们的用法类似,以函数,pie,为例,该函数的调用格式为:,pie(X,),pie(X,explode,),pie(.,labels),其中,x,是欲分析数据对应的数组,,explode,与,x,的维数相同,其中的非零元素对应的切片是分离的切片,,labels,中的参数是增加的自定义标注内容,它与,x,的维数也相同。,七、动画的制作,利用动画可以观察变化全过程的更多信息,同时可能得到相关的规律,本节将介绍如何利用,MATLAB,制作动画。,MATLAB,中动画的制作主要有以下两种方式:,电影动画,:在保存多幅图像后以电影的形式播放出来,这种方式适用于获取一幅图像时间较长的情况,用户可以在计算出所有图像后反复观察图像变化过程。,擦除动画,:在图形窗口中不断地计算并画出图形,在当前图形窗口中只显示利用当前参数计算所得的图片,这样看起来就具有动画效果了。这种方式适用于获得图像时间较短的情况。,1,、,电影动画,电影动画的好处就是,运行一次可以多次播放,而且可以直接生成,.,avi,文件,直接独立于,MATLAB,环境播放。,MATLAB,中,创建电影动画的过程主要分为以下,2,个步骤:,(,1,),调用,moviein,(),函数对内存进行初始化(该步骤在,MATLAB 5.3,以上均可省略,),,创建一个足够大的矩阵,使之能够容纳基于当前坐标轴大小的一系列指定的图形(此处称为帧)。,(,2,),调用,getframe,(),函数生成每个帧。该函数可以捕捉动画帧,并保存到矩阵中。一般将该函数放到,for,循环中得到一系列的动画帧。该函数的调用格式主要有:,F=,gefframe,%,从当前图形框中得到动画帧,F=,gefframe(h,)%,从图形句柄,h,中得到动画帧,F=,getframe(h,rect,)%,从图形句柄,h,的指定区域,r
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服