收藏 分享(赏)

第2章基本语法.ppt

上传人:Facebook 文档编号:2234787 上传时间:2018-09-06 格式:PPT 页数:152 大小:482.50KB
下载 相关 举报
第2章基本语法.ppt_第1页
第1页 / 共152页
第2章基本语法.ppt_第2页
第2页 / 共152页
第2章基本语法.ppt_第3页
第3页 / 共152页
第2章基本语法.ppt_第4页
第4页 / 共152页
第2章基本语法.ppt_第5页
第5页 / 共152页
点击查看更多>>
资源描述

1、第二章 MATLAB基本语法,2.1.1 变量,命名规则 变量名由字母、数字和下划线组成,字母间不可留空格,而且第一个字符必须为字母。 变量名中的英文字母大小写是有区别的。(A1B和a1b是有区别的) 变量名的上限是19个字母。,第1节 变量及常用函数,保留特殊变量名,变量名的查看与删除 直接键入变量名 使用who和whos命令可以查看所有定义的变量的情况,其中who命令可以查看当前工作区内的变量,whos用来查看当前工作区内的变量和详细信息。 使用clear命令来删除所有定义过的变量,如果只是要去除其中的某几个变量,则应在clear命令后面指明要删除的变量名称。,变量显示格式(表1-1),M

2、ATLAB中所有的数值量为双字长浮点数,显示按下面显示规则: 在缺省情况下,当结果为整数,作为整数显示;当结果为实数,以小数后4位的精度近似显示。如果结果中的有效数字超出了这一范围,以科学计数法显示结果。 format命令改变显示格式,常用的的格式有 long (16位) bank(2个十进制位) hex(十六进制) short(缺省) short e(5位加指数) +(符号)long e(16位加指数) rat(有理数近似),x = 4/3 1.2345e6format short 1.3333 0.0000 format short e 1.3333e+000 1.2345e006 for

3、mat short g 1.3333 1.2345e006 format long 1.33333333333333 0.00000123450000 format long e 1.333333333333333e+000 1.234500000000000e006 format long g 1.33333333333333 1.2345e006 format bank 1.33 0.00 format rat 4/3 1/810045 format hex 3ff5555555555555 3eb4b6231abfd271,2.1.2 基本运算,MATLAB基本运算符,2.1.3、常用函

4、数,1、调用格式:变量名函数名(参数),2.1.4、其他函数,函数一定是出现在等式的右边。 每个函数对其自变量的个数和格式都有一定的要求,如使用三角函数时要注意角度的单位是“弧度”而非“度”。例如sin(1)表示的不是sin1而是sin57.28578 函数允许嵌套,例如:可使用形如sqrt(abs(sin(225*pi/180)的形式。,2.1.5、使用函数注意事项,例1:设两个复数a=1+2i,b=3-4i,计算a+b,a-b,ab,a/b。 a=1+2i;b=3-4i; a+b ans =4.0000 - 2.0000i a-b ans =-2.0000 + 6.0000i a*b an

5、s =11.0000 + 2.0000i a/b ans =-0.2000 + 0.4000i,例2:计算下式的结果,其中x=-3.5,y=6.7。x=pi/180*(-3.5); y=pi/180*6.7; z=sin(abs(x)+abs(y)/sqrt(cos(abs(x+y) z = 1772,例3:我国人口按2000年第五次全国人口普查的结果为12.9533亿,如果年增长率为1.07%,求公元2010年末的人口数。 计算人口的公式为:p1=p0(1+r)n,其中:p1为几年后的人口,p0为人口初值,r为年增长率,n为年数。 r=0.0107; n=2010-2000; p0=12.9

6、533e8; p1=p0*(1.0+r)n p1 =1.4408e+009,例4:求解方程ax2+bx+c=0的根,其中a=1,b=2,c=3。 a=1;b=2;c=3; d=sqrt(b*b-4*a*c); x1=(-b+d)/(2*a) x1 =-1.0000 + 1.4142i x2=(-b-d)/(2*a) x2 =-1.0000 - 1.4142i,2.1.6习题,习题1:设A=1.2,B=-4.6,C=8.0,D=3.5,E=-4.0,计算习题2:设a=5.67,b=7.811,计算,习题3:已知圆的半径为15,求其直径,周长及面积。 习题4:已知三角形三边a=8.5,b=14.6

7、,c=18.4,求三角形面积。 提示 其中:s=(a+b+c)/2。,例5 : 计算1996/18的结果 例6:计算:,例7:已知y=x2 , 求x=时的y值。 例8:计算,第2、3节 MATLAB的矩阵计算,2.2.1、矩阵,矩阵的构造 要用MATLAB做矩阵运算,必须要将矩阵直接输入到MATLAB中去,其中最方便的是将矩阵直接输入。须遵循以下规则: 用中括号把所有矩阵元素括起来。 同一行的不同元素之间数据元素用空格或逗号间隔。 用分号(;)指定一行结束。 也可分成几行输入,用回车代替分号。 数据元素可是表达式,系统将自动计算。,方法1:直接输入 A=1,2,3,4;5 6 7 8;9 10

8、 11 12;13 14 15 16A =1 2 3 45 6 7 89 10 11 1213 14 15 16注意逗号、分号和空格的用法。,方法2:利用表达式输入 B=1,sqrt(25),9,13 2,6,10,7*2 3+sin(pi),7,11,15 4 abs(-8) 12 16B =1 5 9 132 6 10 143 7 11 154 8 12 16 注意回车键的用法。,方法3:利用内部函数产生矩阵 内部函数列表如下:,x=linspace(2,12,6)x =2 4 6 8 10 12ones(3) ones(3,4) F=5*ones(3) z=zeros(2,4) R=ra

9、nd(4,4),x=0:0.5:2y=linspace(0,2,7)z=0 x 1u=y;z,2.2.2、矩阵元素,采用下标来表示矩阵元素,同时可用下标对矩阵元素进行修改 A=1,2,3;4,5,6;7,8,9 A =1 2 34 5 67 8 9 A(1,1)ans =1,A(2,3)ans =6 A(1,1)=0;A(2,3)=A(1,2)+A(3,2); AA =0 2 34 5 107 8 9,2.2.3、矩阵运算,MATLAB对矩阵的运算类似于线性代数。 矩阵的加减运算 运算符 对应元素的加减 适用于两矩阵同阶或其一是标量的情况。 例:已知矩阵A和B,计算CAB,DAB和EA3。,A

10、=21,2,4;7,13,19;1,8,17; B=12 25 24;11 13 9;6 8 1; C=A+BC =33 27 2818 26 287 16 18 D=A-BD =9 -23 -20-4 0 10-5 0 16,E=A+3E =24 5 710 16 224 11 20 矩阵乘法 运算符 适用于前一矩阵的列数和后一矩阵行数相同或者其中为标量的情况。,例:矩阵A和B同上例,试求CAB和DA3。 C=A*BC =298 583 526341 496 304202 265 113 D=A*3D =63 6 1221 39 573 24 51,矩阵除法 运算符 左除 /右除 若A矩阵是

11、非奇异方阵,则AB和B/A运算均可以实现,且左除和右除一般不同,这是因为: AB=inv(A)*b B/A=B*inv(A) 其中inv函数用来求某一个矩阵的逆阵。 例:已知矩阵A和B,试计算AB和A/B。,ABans =0.5081 1.1168 1.14290.3216 -0.6186 0.28570.1717 0.6960 -0.1429 A/Bans =-1.8336 5.6985 -3.28010.5535 0.7891 -1.38710.7496 0.0478 -1.4201,矩阵的乘方 运算符: 例:已知A是一方阵,P是一个正整数,则 AP表示A自乘P次。 A=1 2 3 4;5

12、 6 7 8;9 10 11 12;13 14 15 16; A1 A2 ans =90 100 110 120202 228 254 280314 356 398 440426 484 542 600 A3,矩阵的点运算(元素群运算) 为实现与矩阵相关的标量运算而设计的。 运算符:. 与矩阵的常规运算不同,是针对于矩阵中的元素定义的。 分类: 点乘 . 点乘方 . 点除 ./ 元素群函数见书p23,例:已知矩阵A和B,试求AB,A.B和A.3. A=1 2;3 4; B=5 6;7 8; C=A*B C =19 2243 50 D=A.*B D = E=5 12 1 821 32 27 64

13、,矩阵转置 运算符: 例:已知矩阵A,求其转置矩阵。 A=1 2 3 4;5 6 7 8;9 10 11 12;13 14 15 16 A =1 2 3 45 6 7 89 10 11 1213 14 15 16 A ans =1 5 9 132 6 10 143 7 11 154 8 12 16,同上例(验证复数转置后为它的复共轭) D=A*i D =0 + 1.0000i 0 + 2.0000i 0 + 3.0000i 0 + 4.0000i0 + 5.0000i 0 + 6.0000i 0 + 7.0000i 0 + 8.0000i0 + 9.0000i 0 +10.0000i 0 +1

14、1.0000i 0 +12.0000i0 +13.0000i 0 +14.0000i 0 +15.0000i 0 +16.0000i D ans =0 - 1.0000i 0 - 5.0000i 0 - 9.0000i 0 -13.0000i0 - 2.0000i 0 - 6.0000i 0 -10.0000i 0 -14.0000i0 - 3.0000i 0 - 7.0000i 0 -11.0000i 0 -15.0000i0 - 4.0000i 0 - 8.0000i 0 -12.0000i 0 -16.0000i,求逆矩阵 矩阵A可逆,则矩阵A的逆矩阵是唯一的。 例:求一矩阵的逆矩阵,并

15、验证所得结果。 G=1 2 0;2 5 -1;4 10 -1; X=inv(G) X =5 2 -2-2 -1 10 -2 1 I=inv(G)*G I =1 0 00 1 00 0 1,求特征值 设A为n阶矩阵, 是一个数,如果方程Ax=x存在非零解向量,则称为A的一个特征值,相应的非零向量x称为特征值对应的特征向量。 例:已知矩阵G,求其特征值。 G=1 2 0;2 5 -1;4 10 -1; eig(G)ans =3.73210.26791.0000,求特征多项式 MATLAB提供了求特征多项式的函数poly。 例:根据一向量的值,构造一多项式。 G=1 2 0;2 5 -1;4 10

16、-1; poly(G)ans =1.0000 -5.0000 5.0000 -1.0000 round(poly(G)ans =1 -5 5 -1,求方阵的行列式 若将矩阵看做是行列式,可求相应的行列式值,函数为det。 例:已知矩阵G,求其对应的行列式值。 G=1 2 0;2 5 -1;4 10 -1 G =1 2 02 5 -14 10 -1 det(G),求解线性方程组 线性方程组的一般矩阵形式表示如下: AXB(XAB) 若方程组有解,则X=AB(XB/A)。 例:求下列线性方程组的根要解上述的联立方程式,可以使用“”,即 XAB。,A=2 1 -3;3 -2 2;5 -3 -1; B

17、=5;5;16; X=ABX =1-3-2,向量 矩阵在一定的程度上可以看作是向量的组合,因而,矩阵运算可看作是向量的计算。 向量的产生类似于矩阵,也可采用“:”生成。 例:x=1:5 %初值1,终值5,步长1 x =1 2 3 4 5 y=1:2:9 %初值1,终值9,步长2 y =1 3 5 7 9 z=9:-2:1 %初值9,终值1,步长-2 z =9 7 5 3 1,常用的矩阵函数,2.2.4矩阵的操作,在MATLAB命令行中,使用whos命令可以察看到所有变量的大小。 为了获得矩阵或者向量的大小,MATLAB还提供了两个有用的函数size和length。 size按照下面的形式使用:

18、m,n=size(a,x)。一般的,函数的输入参量x不是用,这是当只有一个输出变量时,size返回一个行向量,第一个数为行数,第二个数为列数;如果有两个输出变量,第一个返回量为行数,第二个返回数为列数。当使用x时,x=1返回行数,x=2返回列数,这时只有一个返回值。 length返回行数或者列数的最大值,即length(a)=max(size(a)。,矩阵的大小,矩阵旋转,MATLAB提供了一组执行矩阵操作的函数,例如flipud(a)使得矩阵上下翻转,fliplr(a)使得矩阵左右翻转,rot90(a)使得矩阵逆时针翻转90等等。,逻辑矩阵概念,逻辑矩阵是大小和对应矩阵相同,而元素为0或者1

19、的数组。逻辑数组一般由关系算子创建。可以使用逻辑矩阵来取得矩阵的部分元素值, 得到矩阵中所有大于3的值。使用逻辑矩阵也可以对矩阵的部分赋值。,矩阵查找和排序,子矩阵的查找使用find命令完成,它返回关系表达式为真的下标。例如: a=10:20; find(a15) ans =7 8 9 10 11 矩阵的排序使用sort函数,它将矩阵按照升序排列。,5矩阵的查找和排序,子矩阵的查找使用find命令完成,它返回关系表达式为真的下标。 矩阵的排序使用sort函数,它将矩阵按照升序排列。 应用: 去奇异点:a(find(astd(a)*3) 嵌入数据:在指定大小的数据后加入数据 替换:替换指定大小的

20、数据段,2.2.5、应用举例,例1:矩阵相乘 已知求:CAB。 A=1 2 3;-2 0 0;1 0 1;-1 2 -3 A =1 2 3-2 0 01 0 1-1 2 -3,B=-1,3;-2 2;2 1 B =-1 3-2 22 1 C=A*B C =1 102 -61 4-9 -2,例2:设矩阵A和B满足关系式ABA2B。 已知求矩阵B。 提示:由AB=A+2B可得(A-2E)B=A,故 B(A-2E)-1A A=4 2 3;1 1 0;-1 2 3; B=inv(A-2*eye(3)*A B =3.0000 -8.0000 -6.00002.0000 -9.0000 -6.0000-2

21、.0000 12.0000 9.0000,例3:求解线性方程组。提示:将该线性方程组变换为AXB形式。 其中:,A=2 -1 3;3 1 -5;4 -1 1 A =2 -1 33 1 -54 -1 1 B=5;5;9; X=AB X =2-10,2.2.6、习题,习题1:已知矩阵A和B求(1)2AB (2)4A23B2 (3)AB (4)BA (5)ABBA,习题2:设三阶矩阵A、B,满足 A1BA6ABA 其中求矩阵B。,习题3:设(2EC-1B)AT=C-1,其中E是4阶单位矩阵,AT是4阶矩阵A的转置。求矩阵A,习题4:设二阶矩阵A,B,X,满足 X2ABX 其中求矩阵X。,习题5:求解

22、线性方程组,第4节 逻辑判断及流程控制,2.4.1、关系运算,关系运算结果只有两种可能:0或1 它是对矩阵的各个元素进行运算 A=magic(6) p=rem(A,3) p=(rem(A,3)=0) j,k=find(p) find(p) lp=find(p),2.4.2、逻辑运算,与(&);或(|);非();异或(xor) all(全为真);any(不全为真)输入量为矩阵,按列进行运算 u=p|p all(p) all(u) any(p),2.4.3、流程控制语句,Matlab提供了三种常用控制结构:顺序结构、分支结构和循环结构。由于这些结构经常包含大量的Matlab命令,故经常出现在命令文

23、件中,而不是直接出现在Matlab提示符后面。做为一名Matlab使用者来说,编程序的一个主要内容就是如何解决一个应用问题所使用的算法用Matlab的语言和函数来描述。换句话说,也就是组织Matlab程序的结构。,(1)顺序结构,顺序结构是由多个程序结构串联而成的,每一个程序模块可以是一条语句、一段程序、一个函数等。 由顺序结构编写的程序,命令执行时是从前至后依次完成的,严格遵循一定的规则:依次执行。 在用MATLAB编写程序时,实现顺序结构的方法非常简单:只需将多个要执行的命令段(程序模块)顺序即可,(2)选择结构,选择结构又称分支结构。在实际编程过程中,并不能仅仅依靠顺序结构。在求解实际问

24、题时,常常要根据输入数据的实际情况进行逻辑叛断,对不同的结果分别进行不同的处理;或者需要反复执行某些程序段落,以避免重复编写结构相似的程序段落带来的程序结构上的臃肿。这就需要在程序中引入选择结构和循环结构。所有的程序都是由这三种基本程序结构交替综合而实现的。,很多情况下,命令的序列必须根据关系的检验有条件地执行。在MATLAB语言中,这种判断主要由If-Else-End结构和Switch-Case-End结构来完成。 If-Else-End结构 最简单的If-Else-End结构是: if expressioncommandsend 如果在表达式中的所有元素为真(非零),那么就执行if和end

25、语言之间的commands。,较复杂的If-Else-End结构具体结构如下:if expression commands evaluated if True elsecommands evaluated if Falseend 如果表达式为真,则执行第一组命令;如果表达式是假,则执行第二组命令。 结构If-Else-End在使用过程中也程序嵌套,具体应用格式如下所示:,if expression1commands evaluated if expression1 is True elseif expression2commands evaluated if expression2 is Tr

26、ue elseif expression3commands evaluated if expression3 is True elsecommands evaluated if no other expression is True end,例:输入一个数,小于100大于0就打印这个数,否则就打印“n100”或“n0n elseif n100sprintf(n100)elsesprintf(n0)end end,Switch-Case-End结构 Switch-Case-End结构用于实现多重选择,其应用格式如下:switch case command1case command2otherwi

27、seend,其中的otherwise模块可以省略;switch语句的执行过程是:首先计算表达式的值,然后将其结果与每一个case后面的数值常量依次进行比较,如果相等则执行该case模块中的语句,在执行完该case模块以后就跳出switch语句。如果表达式的值与所有case模块的进入值无一相同,则执行otherwise模块中的语句。 Switch也可以在一个case语句中,处理多值情况,通过将多值用大括号扩起来作为一个单元实现。 例:编写一个函数,将百分制的学生成绩转换为五级制的成绩。,function f=TranGrade(x) switch fix(x/10) case 10,9f=A;

28、case 8f=B; case 7f=C; case 6f=D; otherwisef=E; end,(3)循环结构,在三种常用的控制结构中,还有一种是循环结构。与其它高级一样,循环结构又分为For语句和While语句两种,首先介绍一下For结构。 For 循环 For循环允许一组命令以固定的和预定的次数重复。 For循环的一般形式是: for x = arraycommandsend,在for和end语句之间的commands按数组中的每一列执行一次。在每一次迭代中,x被指定为数组的下一列,即在第n次循环中,x=array(:, n)。 例:for n=1:10x(n)=sin(n*pi/1

29、0);end x =Columns 1 through 7 0.3090 0.5878 0.8090 0.9511 1.0000 0.9511 0.8090Columns 8 through 10 0.5878 0.3090 0.0000,分析:换句话,第一语句是说:对n等于1到10,求所有语句的值,直至下一个end语句。第一次通过For循环n=1,第二次,n=2,如此继续,直至n=10。在n=10以后,For循环结束,然后求end语句后面的任何命令值,在这种情况下显示所计算的x的元素。 例:求1+2+3+100的和。 s=0; for i=1:100s=s+i; end s,For 循环使用

30、过程中的注意事项: For循环不能用For循环内重新赋值循环变量n来终止。 例:for n=1:10x(n)=sin(n*pi/10);n=10; End x = Columns 1 through 7 0.3090 0.5878 0.8090 0.9511 1.0000 0.9511 0.8090 Columns 8 through 10 0.5878 0.3090 0.0000,(2)语句1 :10 是一个标准的MATLAB数组创建语句。在For循环内接受任何有效的MATLAB数组。 data=3 9 45 6; 7 16 -1 5data =3 9 45 67 16 -1 5 for n

31、=datax=n(1)-n(2) End x = -4 x = -7 x =46 x =1,(3) For循环可按需要嵌套。 for n=1:5for m=5:-1:1A(n,m)=n2+m2;end disp(n) end (4)当有一个等效的数组方法来解给定的问题时,应避免用For循环。例如,上面的第一个例子可被重写为 n=1:10; x=sin(n*pi/10) 两种方法得出同样的结果,而后者执行更快,更直观,要求较少的输入。,(5)为了得到最大的速度,在For循环(While循环)被执行之前,应预先分配数组。例如,前面所考虑的第一种情况,在For循环内每执行一次命令,变量x的大小增加1

32、。迫使MATLAB每通过一次循环要花费时间对x分配更多的内存。为了消去这个步骤,For循环的例子应重写为 x=zeros(1,10); % preallocated memory for x for n=1:10x(n)=sin(n*pi/10); end 现在,只有x(n)的值需要改变。,当循环(While循环) 与For循环以固定次数求一组命令的值相反,While 循环以不定的次数求一组语句的值。While循环的一般形式是: while expressioncommands end 只要在表达式里的所有元素为真,就执行while和end 语句之间的commands。通常,表达式的求值给出一

33、个标量值,但数组值也同样有效。存在:死循环问题,例:矩阵指数的幂级数展开式如下式所示,试利用while循环求矩阵的指数. function f=myexpm(a) e=eye(size(a); f=zeros(size(a); k=1; while norm(e,1)0f=f+e;e=a*e/k;k=k+1; end,分析:本例的计算结果可通过MATLAB函数expm(a)进行验证。程序思想是逐项求和,直到第n项趋于零为止。 例:求1+2+3+100的和。 i=0; s=0; while i100i=i+1;s=s+i; end s,try语句,语句格式为: try语句组1 catch语句组2

34、 end try语句先试探性执行语句组1,如果语句组1在执行过程中出现错误,则将错误信息赋给保留的lasterr变量,并转去执行语句组2。,try例,矩阵乘法运算要求两矩阵的维数相容,否则会出错。先求两矩阵的乘积,若出错,则自动转去求两矩阵的点乘。 程序如下: A=1,2,3;4,5,6; B=7,8,9;10,11,12; tryC=A*B; catchC=A.*B; end C lasterr %显示出错原因,2.4.4、应用举例,例1:Fibonacci数组满足Fibonacci规则:ak+2=ak+ak+1,(k=1,2);且a1=a2=1。要求该数组中第一个大于10000的元素。 a

35、(1)=1;a(2)=1;s=2; while a(s)=10000a(s+1)=a(s-1)+a(s);s=s+1; end i,a(i),第5节 基本绘图方法,在科学研究和工程实践中经常会遇到大批量复杂的数据,如果不借助图表来表现它们之间的关系,一般很难看出这些数据的意义。因此,数据的可视化是进行这方面工作不可缺少的有效手段。但可视化并不像我们想像的那么简单,如果采用传统的编程语言,要想在程序中产生一个图形是相当复杂的过程,完成它不仅需要用户掌握一定的编程技巧,同时也要耗费大量的时间和精力(这一点对任何使用过C或Fortran编程的人都应该有所体会),这必然会影响用户对数据本身的注意力,导

36、致一些不必要的人力资源浪费。一个好的科技应用软件不但能提供给用户功能完善的数值计算能力,而且应该具备操作简单、内容完善的图形绘制功能,这样就能使用户高效地进行数据处理。,2.5.0 简介,MATLAB正是完全考虑了这方面因素的一个成功的软件,它不仅在数值和符号运算方面功能强大,而且在数据可视化方面的表现能力也极为突出。它具有对线型、曲面、视角、色彩、光线阴影等丰富的处理能力,并能以二维、三维乃至多维的形式显示图形数据,可以将数据的各方面特征表现出来。 MATLAB的图形处理充分考虑了高低不同层次用户的不同需求。系统具有两个层次的绘图指令:一个层次是直接对图形句柄进行操作的低层绘图指令,它具有控

37、制和表现数据图形能力强,控制灵活多变等优点,对于有较高或特殊需求的用户而言,该层次能够完全满足他们的要求;另一个层次是在底层指令基础上建立起的高层绘图指令,它的指令简单明了,易于掌握,适用于普通用户。,2.5.1 二维平面图形,基本图形函数 绘制二维图形的最基本函数是plot,它是针对向量或矩阵的列来绘制曲线的。也就是说,使用plot函数之前,必须首先定义好曲线上每一点的x及y坐标,常用格式有: plot(x) 当x为一向量时,以x元素的值为纵坐标,x的序号为横坐标值绘制曲线。 plot(x,y) 以x元素为横坐标值,y元素为纵坐标值绘制曲线。 plot(x,y1,x,y2,) 以公共的x元素

38、为横坐标值,以y1,y2等为纵坐标值,绘制多条曲线。,例:画出一条正弦曲线和一条余弦曲线。 x=0:pi/10:2*pi; y1=sin(x); y2=cos(x); plot(x,y1,x,y2),一般绘制曲线图形时,人们常常采用多种颜色或线型来区分不同的数据组,MATLAB系统中专门提供了这方面的参数选项(表2.12)。,例: x=0:pi/10:2*pi; y1=sin(x); y2=cos(x); plot(x,y1,r+-,x,y2,k*:) %组1曲线采用红色实线并用号 显示数据点位置 %组2曲线采用 黑色点线并用 号显示数据点位 置。,图形修饰 MATLAB为用户提供了一些图形修

39、饰函数,详细情况见下表。(表2.13),特殊符号的输入转义符号alpha Gammabeta Deltagamma Thetadelta Lambdaepsilon Xizeta Pieta omegatheta ,标注的显示控制bf 黑体it 斜体rm 标准形式fontnamefontname 字体名fontsize(fontsize) 字体大小特殊符号如”、”“、”“等,用”来引导。,例: x=0:pi/10:2*pi; y1=sin(x); y2=cos(x); plot(x,y1,x,y2) grid on %添加网格 xlabel(Independent Variable X) yl

40、abel(Dependent Variable Y1&Y2) title(Sin and Cosine Curve) text(1.5,0.3,cos(x) gtext(sin(x) axis(0 2*pi -0.9 0.9),使用了图形修饰的正弦、余弦曲线,设置坐标轴最大最小值的正弦、余弦曲线,图形屏幕控制 默认情况下,MATLAB每一次使用plot函数进行图形绘制,将重新产生一个图形窗口。但有时希望后续的图形能够和前面所绘制的图形进行比较。MATLAB提供了两种方法: 采用hold on(/off)指令,将新产生的图形曲线叠加到已有的图形上。 采用subplot(n,m,k)函数,将函数窗

41、口进行分割,然后在同一个视图窗口中画出多个小图形。 (3)figure(n)打开多个窗口 (4)clf 清除当前窗口内容 例:在同一窗口中绘制线段。,x=0:pi/10:2*pi; y1=sin(x); y2=cos(x); y3=x; plot(x,y1,x,y2) hold on % plot(x,y3) plot(x,y2+y1) % hold off 例:在多个窗口中绘制图形。,x=0:pi/10:2*pi; y1=sin(x); y2=cos(x); y3=exp(x); y4=y1+y2; subplot(2,2,1) % plot(x,y1) subplot(2,2,2) % p

42、lot(x,y2) subplot(2,2,3) % plot(x,y3) subplot(2,2,4) % plot(x,y4),2.5.2 三维立体图形,和二维图形相对应,MATLAB提供了plot3函数,可以在三维空间中绘制三维曲线,它的格式类似于plot,不过多了z方向的数据。llot3使用格式如下:plot3(x1,y1,z1,x2,y2,z2) 其中x1,y1,z1,x2,y2,z2等分别为维数相同的向量,分别存储着曲线的三个坐标值,该函数的使用方式和plot类似,也可以采用多种颜色或线型来区分不同的数据组,只需在每组变量后面加上相关字符串即可实现该功能。,例:绘制下面方程在t=0

43、 2的空间图形。x=0:pi/10:2*pi; y1=sin(x); y2=cos(x); plot3(y1,y2,x,m:p) grid on xlabel(Dependent Variable Y1) ylabel(Dependent Variable Y2) zlabel(Dependent Variable X) title(Sine and Cosine Curve),三维曲面图 在MATLAB中要绘制三维曲面,可以使用mesh(x,y,z)或surf(x,y,z)函数来实现。 函数mesh为数据点绘制网格线,图形中的每一个已知点和其附近的点用直线连接。函数surf和函数mesh的用

44、法类似,但它可以着色表面图,图形中的每一个已知点和其相邻点用平面连接。 为了方便测试立体绘图,系统提供了一个peaks函数,它可以产生一个NN的高斯分布矩阵,其对应的图形是一个凹凸有致的曲面,包含了三个局部极大点及三个局部极小点。,利用peaks函数可以比较mesh和surf的区别。 例:分别用mesh和surf函数绘制高斯矩阵的曲面。 z=peaks(40); mesh(z); %以z矩阵元素和其下标为数据点绘制网格线 surf(z); %着色表面图 在曲面绘图中,另外一个重要的函数是函数meshgrid,其一般使用格式为: X,Y=meshgrid(x,y) 其中x和y是向量,通过该函数可

45、将x和y指定的区域转换成为矩阵X和Y。这样我们在绘图时就可以先用meshgrid函数产生在x-y平面,上的二维的网格数据,再以一组z轴的数据对应到这个二维的网格,即可画出三维的曲面。 例:绘制一面方程在x-7.5 7.5,y-7.5 7.5的图形。 x=-7.5:0.5:7.5; y=x; %产生x和y两个变量 X,Y=meshgrid(x,y);%形成二维网格数据 R=sqrt(X.2+Y.2)+eps;%加上eps可避免当R为分母时趋近于零时会无法定义 Z=sin(R)./R;%产生z轴数据。 surf(X,Y,Z),2.5.3 其它图形函数,MATLAB除了提供前面所讲的绘图函数plot

46、以外,还提供了其它常用的绘图函数。常用的绘图函数见下表:,x=0:pi/10:2*pi; y1=sin(x); subplot(2,2,1) plot(x,y1),subplot(2,2,2) bar(x,y1) subplot(2,2,3) fill(x,y1,g) subplot(2,2,4) stairs(x,y1),2.5.4 动画,MATLAB支持动画的制作和放映,其制作过程比单纯制作静态图形复杂得多,也需要更多的函数来支持。只举一例(通过改变观察点实现)! 例:z=peaks(40); surf(z); d=20; azimuth,elevation=view; rot=0:1:d

47、; for i=1:length(rot)view(azimuth+rot(i) elevation)drawnow end,2.5.5 符号表达式绘图,利用可视化技术,可以将表达式进行图形显示,更好的理解表达式含义。MATLAB提供了两个函数ezplot和fplot。 函数fplot用来绘制数学函数,其调用格式为fplot(fun,lims),其中fun就是所要绘制的函数,可以是定义函数的M文件名,也可以是以x为变量的可计算字符串;其中的lims如下:lims=XMIN XMAX YMIN YMAX限定了x、y轴上的绘图空间。,例: subplot(2,2,1),fplot(humps,0 1) subplot(2,2,2),fplot(abs(exp(-j*x*(0:9)*ones(10,1),0 2*pi) subplot(2,2,3),fplot(tan(x),sin(x),cos(x),2*pi*-1 1 -1 1) subplot(2,2,4),fplot(sin(1./x),0.01 0.1,1e-3),

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 中等教育 > 小学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报