MATLAB3 MATLAB绘图与程序设计教程_第1页
MATLAB3 MATLAB绘图与程序设计教程_第2页
MATLAB3 MATLAB绘图与程序设计教程_第3页
MATLAB3 MATLAB绘图与程序设计教程_第4页
MATLAB3 MATLAB绘图与程序设计教程_第5页
已阅读5页,还剩79页未读 继续免费阅读

下载本文档

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

文档简介

1、MATLAB绘图与程序设计绘图与程序设计 ? MATLAB的绘图与计算可视化的绘图与计算可视化 MATLAB具有非常强大的二维和三维绘具有非常强大的二维和三维绘图功能,尤其擅长于各种科学运算结果的图功能,尤其擅长于各种科学运算结果的可视化。可视化。 ? MATLAB的程序设计的程序设计 MATLAB也是一个功能强大的编程工具软也是一个功能强大的编程工具软件,可编写出相当高效的脚本件,可编写出相当高效的脚本(Script) .m文文件及函数。件及函数。 一、一、MATLAB的绘图与计算的绘图与计算可视化可视化 ?1. MATLAB图形制作概述图形制作概述 2. MATLAB图形窗口的功能图形窗口

2、的功能 3. MATLAB二维曲线的绘制二维曲线的绘制 4. MATLAB的三维图形绘制的三维图形绘制 1. MATLAB图形制作概述图形制作概述 MATLAB进行图形绘制的基本步骤为:进行图形绘制的基本步骤为: (1) 准备作图数据准备作图数据 (2) 选定作图窗口与作图区域(选定作图窗口与作图区域(figure,subplot) (3) 调用作图命令调用作图命令 (4) 设置图形格式设置图形格式 ?线性机器标记的设置线性机器标记的设置 坐标轴范围、坐标轴标记、网格线的设置坐标轴范围、坐标轴标记、网格线的设置 坐标轴标签、图例、文本等的设置坐标轴标签、图例、文本等的设置 (5) 输出所制作的

3、图形输出所制作的图形 2. MATLAB的图形窗口的图形窗口 MATLAB用于图形用于图形输出的专用窗口,输出的专用窗口,称为称为图形窗口图形窗口。所。所有的绘图命令将把有的绘图命令将把图形输出到当前图图形输出到当前图形窗口,若在命令形窗口,若在命令执行前,当前窗口执行前,当前窗口已经存在图形,则已经存在图形,则原图形将被新图形原图形将被新图形覆盖掉。覆盖掉。 ?3. 二维曲线的绘制二维曲线的绘制 ?基本绘图命令基本绘图命令plot plot命令是命令是MATLAB中最简单而且使用最广泛的中最简单而且使用最广泛的一个绘图命令,用来绘制二维曲线。一个绘图命令,用来绘制二维曲线。 语法:语法:pl

4、ot(x) %绘制以绘制以x为纵坐标的二维曲线为纵坐标的二维曲线 plot(x,y) %绘制以绘制以x为横坐标为横坐标y为纵坐标的二维为纵坐标的二维曲线曲线 说明:说明:x和和y可以是向量或矩阵。可以是向量或矩阵。 ?plot命令的功能命令的功能 ? plot命令自动打开一个图形窗口命令自动打开一个图形窗口Figure 用直线连接相邻两数据点来绘制图形用直线连接相邻两数据点来绘制图形 ?根据图形坐标大小自动缩扩坐标轴,将根据图形坐标大小自动缩扩坐标轴,将数据标尺及单位标注自动加到两个坐标数据标尺及单位标注自动加到两个坐标轴上,可自定坐标轴,可把轴上,可自定坐标轴,可把x, y 轴用对轴用对数坐

5、标表示数坐标表示 (1) plot(x) 绘制绘制x向量曲线向量曲线 例例1. 用用plot(x)命令画直线命令画直线 32.8 x1=1 2 3 plot(x1) x2=0 1 0 plot(x2) 2.62.42.221.81.61.41.2111.21.41.61.822.22.42.62.8310.90.80.70.60.50.40.30.20.1011.21.41.61.822.22.42.62.83 (2) plot(x,y) 绘制向量绘制向量x和和y的曲线的曲线 plot(x,y): 参数参数x,y为向量,以为向量,以x为横坐标,以为横坐标,以y为纵坐标。为纵坐标。 注意:注意:

6、x,y的长度必须相等的长度必须相等 10.80.60.40.20-0.2-0.4-0.6-0.8例例2. 绘制正弦曲线绘制正弦曲线y=sin(x)和方波曲线和方波曲线 x1=0:0.1:2*pi; y1=sin(x1); %y1为为x1的正弦函数的正弦函数 plot(x1,y1); x2=0 1 1 2 2 3 ; y2=1 1 0 0 1 1 ; plot(x2,y2); axis(0 4 0 2) %将坐标轴范围设定为将坐标轴范围设定为0-4和和0-2 -1012321.81.61.41.210.80.60.40.2000.511.5456722.533.54(3) plot(x) 绘制矩

7、阵绘制矩阵x的曲线的曲线 当当X是一个是一个m n的矩阵,的矩阵,plot(x)命令为矩阵命令为矩阵X每一列每一列画一条线,共画一条线,共n条曲线,各曲线自动用不同颜色标示。条曲线,各曲线自动用不同颜色标示。 例例3 矩阵图形的绘制。矩阵图形的绘制。 x1=1 2 3;4 5 6; plot(x1); x2=peaks; %产生一个产生一个49*49的矩阵的矩阵 plot(x2); 程序分析:程序分析:a图中有三条曲线而不是两条曲线,因为图中有三条曲线而不是两条曲线,因为矩阵矩阵x1有三列,每列向量画一条曲线;有三列,每列向量画一条曲线;b图为由图为由peaks函数生成的一个函数生成的一个49

8、49的二维矩阵,因此产生的二维矩阵,因此产生49条曲条曲线。线。 65.554.541086423.5032.521.5111.11.21.31.41.51.61.71.81.92-2-4-6-805101520253035404550图图a 矩阵矩阵X1的图形的图形 图图b 矩阵矩阵X1的图形的图形 (4) plot(x,y)绘制混合式曲线绘制混合式曲线 当当plot(x,y)命令中的参数命令中的参数x和和y是向量或矩阵时,是向量或矩阵时,分别有以下几种情况:分别有以下几种情况: ?如果如果x是向量,而是向量,而y是矩阵,则是矩阵,则x的长度与矩阵的长度与矩阵y的的行数或列数必须相等,如果行

9、数或列数必须相等,如果x的长度与的长度与y的行数相等,的行数相等,则向量则向量x与矩阵与矩阵y的每列向量对应画一条曲线;如果的每列向量对应画一条曲线;如果x的长度与的长度与y的列数相等,向量的列数相等,向量x与与y的每行向量画一的每行向量画一条曲线,如果条曲线,如果y是方阵,则是方阵,则x和和y的行数和列数都相的行数和列数都相等,将向量等,将向量x与矩阵与矩阵y的每列向量画一条曲线;的每列向量画一条曲线; ?如果如果x是矩阵,而是矩阵,而y是向量,则是向量,则y的长度必须等于的长度必须等于x的行数或列数,绘制的方法与前一种相似;的行数或列数,绘制的方法与前一种相似; ?如果如果x和和y都是矩阵

10、,则大小必须相同,矩阵都是矩阵,则大小必须相同,矩阵x的每的每列和列和y的每列画一条曲线。的每列画一条曲线。 例例4 混合式图形的绘制。混合式图形的绘制。 x1=1 2 3; y1=1 2 3;4 5 6 plot(x1,y1) %每行一条曲线,每行一条曲线,Fig. 1 y2=1 2 ;3 4; 5 6 plot(x1,y2) %每列一条曲线,每列一条曲线,Fig. 2 plot(y1,x1) %Fig. 3 plot(y2,x1) %Fig. 4 332.82.82.62.62.42.42.22.2221.81.81.61.61.41.41.21.2111.522.533.544.555.

11、56111.522.533.544.555.56Fig. 3 Fig. 4 65.554.543.532.521.5111.21.41.61.822.22.42.62.83Fig. 1 65.554.543.532.521.5111.21.41.61.822.22.42.62.83Fig. 2 (5) plot(x1,y1,x2,y2,)绘制多条曲线绘制多条曲线 plot命令还可以同时绘制多条曲线,用多个矩阵对为命令还可以同时绘制多条曲线,用多个矩阵对为参数,参数,MATLAB自动以不同的颜色绘制不同曲线。自动以不同的颜色绘制不同曲线。 例例5. 绘制三条曲线。绘制三条曲线。 x=0:0.1:

12、2*pi; plot(x,sin(x),x,cos(x),x,sin(3*x) %画三条曲线画三条曲线 10.80.60.40.20-0.2-0.4-0.6-0.8-101234567绘制曲线的一般步骤绘制曲线的一般步骤 步骤步骤 1 内容内容 曲线数据准备:对于二维曲线,横坐标和纵坐标数据变量;对曲线数据准备:对于二维曲线,横坐标和纵坐标数据变量;对于三维曲面,矩阵参变量和对应的函数值。于三维曲面,矩阵参变量和对应的函数值。 2 3 4 5 6 7 8 指定图形窗口和子图位置:默认时,打开指定图形窗口和子图位置:默认时,打开Figure No.1窗口或当窗口或当前窗口、当前子图;也可以打开指

13、定的图形窗口和子图。前窗口、当前子图;也可以打开指定的图形窗口和子图。 设置曲线的绘制方式:线型、色彩、数据点形。设置曲线的绘制方式:线型、色彩、数据点形。 设置坐标轴:坐标的范围、刻度和坐标分格线设置坐标轴:坐标的范围、刻度和坐标分格线 图形注释:图名、坐标名、图例、文字说明图形注释:图名、坐标名、图例、文字说明 着色、明暗、灯光、材质处理着色、明暗、灯光、材质处理(仅对三维图形使用仅对三维图形使用) 视点、三度视点、三度(横、纵、高横、纵、高)比比(仅对三维图形使用仅对三维图形使用) 图形的精细修饰图形的精细修饰(图形句柄操作图形句柄操作):利用对象属性值设置;:利用对象属性值设置; 利用

14、图形窗工具条进行设置。利用图形窗工具条进行设置。 说明:说明: 步步骤骤1和和3是是最最基基本本的的绘绘图图步步骤骤,如如果果利利用用MATLAB的默认设置通常只需要这两个基本的默认设置通常只需要这两个基本步骤就可以基本绘制出图形,而其他步骤并不步骤就可以基本绘制出图形,而其他步骤并不完全必需。完全必需。 步骤步骤2一般在图形较多的情况下,需要指定图一般在图形较多的情况下,需要指定图形窗口、子图时使用。形窗口、子图时使用。 除了步骤除了步骤1、2、3的其他步骤用户可以根据自的其他步骤用户可以根据自己需要改变前后次序。己需要改变前后次序。 (6)复向量式绘图复向量式绘图 plot(Z): 当当Z

15、为一个复向量时,该为一个复向量时,该命令等价于命令等价于plot(real(Z),imag(Z);其它情况忽略其它情况忽略Z的虚部。的虚部。 例例6. t=0:0.1:3*pi; x=t+i*cos(t); plot(x); figure; plot(t,x) 10.80.60.40.20-0.2-0.4-0.6-0.8-1012345678910109876543210012345678910?多个图形绘制的方法多个图形绘制的方法 (1) 指定图形窗口指定图形窗口 如果需要多个图形窗口同时打开时,可以使用如果需要多个图形窗口同时打开时,可以使用figure语句。语句。 语法:语法: figu

16、re(n) %产生新图形窗口产生新图形窗口 说明:如果该窗口不存在,则产生新图形窗口并设置说明:如果该窗口不存在,则产生新图形窗口并设置为当前图形窗口,该窗口名为为当前图形窗口,该窗口名为“Figure No.n”,而不,而不关闭其它窗口。关闭其它窗口。 如果在使用绘图命令之后,想清除图形窗口画其它如果在使用绘图命令之后,想清除图形窗口画其它图形,应使用图形,应使用“clf”命令清图形窗。命令清图形窗。 (2) 同一窗口多个子图同一窗口多个子图 如果需要在同一个图形窗口中布置几幅独立的子如果需要在同一个图形窗口中布置几幅独立的子图,可以在图,可以在plot命令前加上命令前加上subplot命令

17、来将一个命令来将一个图形窗口划分为多个区域,每个区域一幅子图。图形窗口划分为多个区域,每个区域一幅子图。 语法:语法:subplot(m,n,k) %使使(mn)幅子图中的第幅子图中的第k幅幅成为当前图成为当前图 说明:将图形窗口划分为说明:将图形窗口划分为mn幅子图,幅子图,k是当前是当前子图的编号,子图的编号,“,” 可以省略。子图的序号编排原可以省略。子图的序号编排原则是:左上方为第则是:左上方为第1幅,先向右后向下依次排列,幅,先向右后向下依次排列,子图彼此之间独立。子图彼此之间独立。 例例7. 用用subplot命令画四个子图。命令画四个子图。 x=0:0.1:2*pi; subpl

18、ot(2,2,1) plot(x,sin(x) subplot(2,2,2) plot(x,cos(x) subplot(2,2,3) plot(x,sin(3*x) subplot(224) plot(x,cos(3*x) %分割为分割为2*2个子图,左上方为当前图个子图,左上方为当前图 %右上方为当前图右上方为当前图 %左下方为当前图左下方为当前图 %右下方为当前图,省略逗号右下方为当前图,省略逗号 同一窗口多个子图绘制同一窗口多个子图绘制 10.50-0.5-10246810.50-0.5-10246810.50-0.5-10246810.50-0.5-102468(3) 同一窗口多次叠

19、绘同一窗口多次叠绘 为了在一个坐标系中增加新的图形对象,可以为了在一个坐标系中增加新的图形对象,可以用用“hold”命令来保留原图形对象。命令来保留原图形对象。 语法:语法: hold on %使当前坐标系和图形保留使当前坐标系和图形保留 hold off %使当前坐标系和图形不保留使当前坐标系和图形不保留 hold %在以上两个命令中切换在以上两个命令中切换 说明:说明:在设置了在设置了“hold on”后,如果画多个图后,如果画多个图形对象,则在生成新的图形时保留当前坐标系形对象,则在生成新的图形时保留当前坐标系中已存在的图形对象,中已存在的图形对象,MATLAB会根据新图会根据新图形的大

20、小,重新改变坐标系的比例。形的大小,重新改变坐标系的比例。 例例8 在同一窗口画出函数在同一窗口画出函数 sinx在区间在区间0 2的的曲线和曲线和cosx在区间在区间- 的曲线。的曲线。 x1=0:0.1:2*pi; plot(x1,sin(x1) hold on x2=-pi:.1:pi; plot(x2,cos(x2) 程序分析:坐标系的范围由程序分析:坐标系的范围由02转变为转变为- 2。 (4) 双纵坐标图双纵坐标图 语法:语法: plotyy(x1,y1,x2,y2) %以左、右不同纵轴绘制两以左、右不同纵轴绘制两条曲线条曲线 说明:左纵轴用于说明:左纵轴用于(x1,y1)数据,右

21、纵轴用于数据,右纵轴用于(x2,y2)数据来绘制两条曲线。坐标轴的范围、数据来绘制两条曲线。坐标轴的范围、刻度都自动产生。刻度都自动产生。 例例8续续 用用plotyy函数实现在同一图形窗口绘制两函数实现在同一图形窗口绘制两条曲线条曲线。 plotyy(x1,sin(x1),x2,cos(x2) 程序分析:程序分析:plotyy函数用不同颜色绘制两条曲线,左右函数用不同颜色绘制两条曲线,左右两边使用两个纵坐标轴,横坐标从两边使用两个纵坐标轴,横坐标从- 2。 10.80.60.40.20-0.2-0.4-0.6-0.8-1-4-202468用用hold on在同一窗口在同一窗口画出两条曲线画出

22、两条曲线 110.50.500-0.5-0.5-1-4-202468-1用用plotyy在同一窗口画在同一窗口画出两条曲线出两条曲线 ?曲线的线型、颜色和数据点形曲线的线型、颜色和数据点形 颜色颜色 类型类型 黄色黄色 品红色品红色(紫紫色色) 青色青色 红色红色 绿色绿色 蓝色蓝色 白色白色 黑色黑色 符号符号 y(Yellow) m(Magenta) c(Cyan) r(Red) g(Green) b(Blue) w(White) k(Black) 数据点间连线数据点间连线 类型类型 实实线线(默认默认) 点线点线 点划线点划线 虚虚线线 符号符号 - : -. - 数据点形数据点形 类型

23、类型 实点标记实点标记 圆圈标记圆圈标记 叉号形叉号形 十字形十字形 星号标记星号标记 方块标记方块标记 钻石形标记钻石形标记 向下的三角形标记向下的三角形标记 向上的三角形标记向上的三角形标记 向左的三角形标记向左的三角形标记 向右的三角形标记向右的三角形标记 五角星标记五角星标记 六六连连形形标记标记 符号符号 . o x + * s d v p h 语法:语法: plot(x,y,s) 说明:说明:x为横坐标矩阵,为横坐标矩阵,y为纵坐标矩阵,为纵坐标矩阵,s为类型说明字为类型说明字符串参数;符串参数;s字符串可以是线段类型、颜色和数据点形三字符串可以是线段类型、颜色和数据点形三种类型的

24、符号之一,也可以是三种类型符号的组合。种类型的符号之一,也可以是三种类型符号的组合。 例例9 用不同线段类型、颜色和数据点形画出用不同线段类型、颜色和数据点形画出sinx和和cosx曲曲线。线。 x=0:0.1:2*pi; plot(x,sin(x),r-.) %用红色点划线画出曲线用红色点划线画出曲线 hold on plot(x,cos(x),b:o) %用蓝色圆圈画出曲线,用点线连接用蓝色圆圈画出曲线,用点线连接 10.80.60.40.20-0.2-0.4-0.6-0.8-101234567?设置坐标轴和文字标注设置坐标轴和文字标注 含义含义 使用默认设置使用默认设置 使当前坐标范围不

25、变使当前坐标范围不变 取消轴背景取消轴背景 使用轴背景使用轴背景 命令命令 含义含义 (1) 坐标轴的控制坐标轴的控制 命令命令 axis auto axis equal 纵、横轴采用等长刻度纵、横轴采用等长刻度 axis fill axis manual axis off axis on axis ij axis xy 在在manual方式下起作方式下起作用,使坐标充满整个绘用,使坐标充满整个绘图区图区 纵、横轴采用等长刻度,纵、横轴采用等长刻度,axis image 且坐标框紧贴数据范围且坐标框紧贴数据范围 axis normal 默认矩形坐标系默认矩形坐标系 产生正方形坐标系产生正方形坐

26、标系 把数据范围直接设为坐把数据范围直接设为坐标范围标范围 矩阵式坐标,原点在左矩阵式坐标,原点在左 axis square 上方上方 普通直角坐标,原点在普通直角坐标,原点在axis tight 左下方左下方 (2) 分格线和坐标框分格线和坐标框 (a) 使用使用grid命令显示分格线命令显示分格线 语法:语法: grid on %显示分格线显示分格线 grid off %不显示分格线不显示分格线 grid %在以上两个命令间切换在以上两个命令间切换 说明:不显示分格线是说明:不显示分格线是MATLAB的默认设置。分格线的默认设置。分格线的疏密取决于坐标刻度,如果要改变分格线的疏密,的疏密取

27、决于坐标刻度,如果要改变分格线的疏密,必须先定义坐标刻度。必须先定义坐标刻度。 (b) 使用使用box命令显示坐标框命令显示坐标框 语法:语法: box on %使当前坐标框呈封闭形式使当前坐标框呈封闭形式 box off %使当前坐标框呈开启形式使当前坐标框呈开启形式 box %在以上两个命令间切换在以上两个命令间切换 说明:在默认情况下,所画的坐标框呈封闭形式。说明:在默认情况下,所画的坐标框呈封闭形式。 例例10 在两个子图中使用坐标轴、分格线和坐标框控在两个子图中使用坐标轴、分格线和坐标框控制。制。 x=0:0.1:2*pi; subplot(2,1,1) plot(sin(x),co

28、s(x) axis equal grid on subplot(2,1,2) plot(x,exp(-x) axis(0,3,0,2) %纵、横轴采用等长刻度纵、横轴采用等长刻度1 %加分格线加分格线 0.50-0.5改变坐标轴范围改变坐标轴范围 -3-2-1012321.510.5000.511.522.53 %(3) 文字标注文字标注 (a) 添加图名添加图名 语法:语法: title(s) %书写图名书写图名 说明:说明:s为图名,为字符串,可以是英文或中文。为图名,为字符串,可以是英文或中文。 (b) 添加坐标轴名添加坐标轴名 语法:语法: xlabel(s) %横坐标轴名横坐标轴名

29、ylabel(s) %纵坐标轴名纵坐标轴名 (c) 添加文字注释添加文字注释 语法:语法: text(xt,yt,s) %在图形的在图形的(xt,yt)坐标处书写文坐标处书写文字注释字注释 (d) 添加图例添加图例 语法:语法: legend(s,pos) %在指定位置建立图例在指定位置建立图例 legend off %擦除当前图中的图例擦除当前图中的图例 说明:参数说明:参数s是图例中的文字注释,如果多个注释则是图例中的文字注释,如果多个注释则可以用可以用 s1,s2,的方式;参数的方式;参数pos是图例在图上位是图例在图上位置的指定符,它的取值如下表所示。置的指定符,它的取值如下表所示。

30、pos取值取值 0 1 右上角右上角(默默认认) 2 3 4 -1 自动取最自动取最图例位置图例位置 佳位置佳位置 左上角左上角 左下角左下角 右下角右下角 图右侧图右侧 例例11 在图形窗口中添加文字注释。在图形窗口中添加文字注释。 x=0:0.1:2*pi; plot(x,sin(x) hold on plot(x,cos(x),ro) title(y1=sin(x),y2=cos(x) xlabel(x) legend(sin(x),cos(x),4) text(pi,sin(pi),x= pi) 加文字注释加文字注释 %添加标题添加标题 %添加横坐标名添加横坐标名 在右下角添加图例在右

31、下角添加图例 %在在pi, sin(pi)处添处添 y1=sin(x),y2=cos(x)1 0.80.60.40.20 x=?-0.2-0.4-0.6-0.8sin(x)cos(x)-1 01234567x %4. MATLAB三维绘图三维绘图 plot3是用来绘制三维曲线的,它的使用格式与二是用来绘制三维曲线的,它的使用格式与二维绘图的维绘图的plot命令很相似。命令很相似。 语法:语法: plot3(x,y,z, s) %绘制三维曲线绘制三维曲线 plot3(x1,y1,z1, s 1 ,x2,y2,z2, s 2 , ) %绘制多条三绘制多条三维曲线维曲线 说明:当说明:当x、y、z是

32、同维向量时,则绘制以是同维向量时,则绘制以x、y、z元素为元素为坐标的三维曲线;当坐标的三维曲线;当x、y、z是同维矩阵时,则绘制三维是同维矩阵时,则绘制三维曲线的条数等于矩阵的列数。曲线的条数等于矩阵的列数。s是指定线型、色彩、数据是指定线型、色彩、数据点形的字符串。点形的字符串。 例例12 三维曲线绘图。三维曲线绘图。 x=0:0.1:20*pi; plot3(x,sin(x),cos(x) %按系统默认设置绘图按系统默认设置绘图 10.50-0.5-110.50-0.5-1020604080?立体图形绘制立体图形绘制 三维绘图可分为三个过程:三维绘图可分为三个过程: ? 生成平面网格点生

33、成平面网格点 ? 生成和绘制三维网格点生成和绘制三维网格点 ? 处理三维表面处理三维表面 (1) 生成平面网格点生成平面网格点 语法:语法:X,Y=meshgrid(x,y) 说明:说明:x 是区间是区间x0,xm上划分点组成的向量;上划分点组成的向量;y 是区间是区间y0,yn上划分点组成的向量;上划分点组成的向量;X,Y是输出变量矩阵,矩阵是输出变量矩阵,矩阵X的行向量都是的行向量都是x,矩阵,矩阵y的列向量都是的列向量都是y。 例:例: X,Y = meshgrid(-2:2:2,-2:1:2) (2) 生成三维网格点生成三维网格点 语法:语法: mesh(x,y,z,c): 说明:说明

34、:x,y,z,c是同维矩阵;是同维矩阵;x,y,z对应确定空间上的网格点;对应确定空间上的网格点;c为颜色矩阵。为颜色矩阵。 例:例:X,Y=meshgrid(-2:.2:2,-2:.2:2); Z=X.*exp(-X.2-Y.2); mesh(Z) (3) 三维表面处理三维表面处理 对网格曲面的网格块区域着色就得到实曲面。对网格曲面的网格块区域着色就得到实曲面。mesh命命令仅对网格线着色,而对网格片着色使用令仅对网格线着色,而对网格片着色使用surf命令。命令。surf的使用方式与的使用方式与mesh相同。相同。 例:例:X,Y=meshgrid(-2:.2:2,-2:.2:2); Z=X

35、.*exp(-X.2-Y.2); surf(Z); ?三维表面处理效果三维表面处理效果 (1) shading faceted 网格修饰,缺省方式网格修饰,缺省方式 例例. peaks(30); Peaks50-520-2y-3-2-1x0123(2) shading flat 去掉黑色线条,根据小方去掉黑色线条,根据小方块的值确定颜色块的值确定颜色 例例. peaks(30); shading flat Peaks50-520-2y-3-2-1x0123(3) shading interp 颜色整体改变,根据颜色整体改变,根据 小方块四角的值差补过度点的值确定颜色小方块四角的值差补过度点的值

36、确定颜色 例例. peaks(30); shading interp Peaks50-520-2y-3-2-1x0123例例. peaks(30); shading interp; colormap(hot) Peaks50-520-2y-3-2-1x0123例例. set( gcf,color,0 0 0) X,Y,Z=peaks(30); surfl(X,Y,Z) shading interp; colormap(cool); axis off (3) 透视与消隐透视与消隐 p=peaks(30); mesh(p); hidden on 1050-5-1030202010001030?等高

37、线的绘制等高线的绘制 函数函数contour绘制二维等高线。用户可以指定等高绘制二维等高线。用户可以指定等高线的条数、坐标系的比例及某值上的等高线,两者线的条数、坐标系的比例及某值上的等高线,两者用法相同。用法相同。 例例. 等高线高程标示等高线高程标示 set(gcf,color,1 1 1) c,h = contour(peaks); clabel(c,h) 452404642683504230-22250-2202022150-200-410-64-2-25051015202530354045二、二、MATLAB程序设计程序设计 ?1. M文件与函数文件与函数 2. 变量与表达式变量与表

38、达式 3. 数据类型数据类型 4. 程序结构程序结构 5. 程序调试、错误和异常处理程序调试、错误和异常处理 6. M文件的优化和加速文件的优化和加速 1. M文件与函数文件与函数 ?将将MATLAB命令构成的程序存储成以命令构成的程序存储成以m为扩展名的文为扩展名的文件,然后再执行该程序文件,这种工作模式称为命令件,然后再执行该程序文件,这种工作模式称为命令文件模式。文件模式。 MATLAB程序代码所编写的文件通常以程序代码所编写的文件通常以“.m” 为扩展为扩展名,因此这些文件称为名,因此这些文件称为M文件,文件,M文件是一个文件是一个ASCII码文件,可以用任何字处理软件来编写。码文件,

39、可以用任何字处理软件来编写。 M文件有两种形式:文件有两种形式:M脚本文件和脚本文件和M函数文件。函数文件。M函函数文件是数文件是MATLAB程序设计的主流。程序设计的主流。MATLAB本身本身的一系列工具箱的各种内部函数就是的一系列工具箱的各种内部函数就是M函数文件,用函数文件,用户可以为某种目的专门编写一组户可以为某种目的专门编写一组MATLAB函数文件函数文件组成工具箱。组成工具箱。 ?M文本编辑器文本编辑器 建立一个新的建立一个新的M文件的方法是在文件的方法是在MATLAB的命令窗口的命令窗口点击主菜单点击主菜单File下的下的New中的中的Mfile选项,接着就会出选项,接着就会出现

40、现MATLAB EditorDebugger窗口窗口. MATLAB Editor窗口也可以在窗口也可以在MATLAB的命令窗口中用的命令窗口中用Edit命令打开。命令打开。M文件编辑器窗口会以不同的颜色显示注释、关键词、文件编辑器窗口会以不同的颜色显示注释、关键词、字符串和一般程序代码;可以方便地打开和保存字符串和一般程序代码;可以方便地打开和保存M文件文件并进行编辑和调试;并进行编辑和调试; 编辑功能有大多数编辑器都有的复制、粘贴、查找等,编辑功能有大多数编辑器都有的复制、粘贴、查找等,还设有书签、定位、清除工作空间和命令窗口、加注释、还设有书签、定位、清除工作空间和命令窗口、加注释、缩进

41、等功能。缩进等功能。 ?脚本脚本 脚本是脚本是M文件里的简单函数和命令的集合,它们没有输文件里的简单函数和命令的集合,它们没有输入输出参数,类似于入输出参数,类似于DOS下的批处理文件。下的批处理文件。 脚本文件的特点:脚本文件的特点: (1) 脚本文件中的命令格式和前后位置,与在命令窗口脚本文件中的命令格式和前后位置,与在命令窗口中输入的没有任何区别。中输入的没有任何区别。 (2) MATLAB在运行脚本文件时,只是简单地按顺序从在运行脚本文件时,只是简单地按顺序从文件中读取一条条命令,送到文件中读取一条条命令,送到MATLAB命令窗口中去命令窗口中去执行。执行。 (3) 与在命令窗口中直接

42、运行命令一样,脚本文件运行与在命令窗口中直接运行命令一样,脚本文件运行产生的变量都是驻留在产生的变量都是驻留在MATLAB的工作空间的工作空间(workspace)中,可以很方便地查看变量,除非用中,可以很方便地查看变量,除非用clear命令清除;脚本文件的命令也可以访问工作空间的所有命令清除;脚本文件的命令也可以访问工作空间的所有数据,因此要注意避免变量的覆盖而造成程序出错。数据,因此要注意避免变量的覆盖而造成程序出错。 例例13 在在M文件编辑调试器窗口中编写文件编辑调试器窗口中编写M脚本文件绘制二阶系统的脚本文件绘制二阶系统的多条时域曲线。多条时域曲线。 (1) 单击单击MATLAB桌面

43、上的图标打开桌面上的图标打开M文件编辑器。文件编辑器。 (2) 将命令全部写入将命令全部写入M文件编辑器中,为了能标志该文件的名称,文件编辑器中,为了能标志该文件的名称,在第一行写入包含文件名的注释。保存文件为在第一行写入包含文件名的注释。保存文件为Ex13.m。 %EX13 二阶系统时域曲线二阶系统时域曲线 x=0:0.1:20; y1=1-1/sqrt(1-0.32)*exp(-0.3*x).*sin(sqrt(1-0.32)*x+acos(0.3) plot(x,y1,r) %画阻尼系数为画阻尼系数为0.3的曲线的曲线 hold on y2=1-1/sqrt(1-0.7072)*exp(

44、-0.707*x).*sin(sqrt(1- 0.7072)*x+acos(0.707) plot(x,y2,g) %画阻尼系数为画阻尼系数为0.707的曲线的曲线 y3=1-exp(-x).*(1+x) plot(x,y3,b) %画阻尼系数为画阻尼系数为1的曲线的曲线 (3) 选择选择M文件编辑器菜单文件编辑器菜单“Debug”“Run”,就可以在图形窗,就可以在图形窗中看到所示的曲线。中看到所示的曲线。 ?函数函数 函数的使用与其它高级语言相似,函数的使用与其它高级语言相似,MATLAB提供的各提供的各种工具几乎都是以函数的形式给出的。种工具几乎都是以函数的形式给出的。MATLAB的各的

45、各个工具箱都是集成了相当多的专用函数而形成的。个工具箱都是集成了相当多的专用函数而形成的。 函数文件的特点:函数文件的特点: (1) 第一行总是以第一行总是以“function”引导的函数声明行;引导的函数声明行; (2) 函数文件在运行过程中产生的变量都存放在函数本身函数文件在运行过程中产生的变量都存放在函数本身的工作空间;的工作空间; (3) 当文件执行完最后一条命令或遇到当文件执行完最后一条命令或遇到“return”命令时,命令时,就结束函数文件的运行,同时函数工作空间的变量就被就结束函数文件的运行,同时函数工作空间的变量就被清除;清除; (4) 函数的工作空间随具体的函数的工作空间随具

46、体的M函数文件调用而产生,随函数文件调用而产生,随调用结束而删除,是独立的、临时的,在调用结束而删除,是独立的、临时的,在MATLAB运运行过程中可以产生任意多个临时的函数空间。行过程中可以产生任意多个临时的函数空间。 ?函数文件格式函数文件格式 函数声明行的格式:函数声明行的格式: function 输出变量列表输出变量列表 = 函数名函数名(输入变量列表输入变量列表) 函数文件的一般结构:函数文件的一般结构: ?函数定义行函数定义行 文件的第一行,定义函数名,输入输出参数的数量和文件的第一行,定义函数名,输入输出参数的数量和名称。名称。 ?H1行行 帮助信息的第一行,紧跟定义行之后。帮助信

47、息的第一行,紧跟定义行之后。 ?函数说明函数说明 H1行以后,函数主体以前的帮助信息。行以后,函数主体以前的帮助信息。 ?函数主体函数主体 函数中进行真正计算和输出赋值等工作的代码。函数中进行真正计算和输出赋值等工作的代码。 ?注释注释 函数体中用函数体中用 引导的对程序的注释。引导的对程序的注释。 例例14 在在M文件编辑调试器窗口编写计算二阶系统时文件编辑调试器窗口编写计算二阶系统时域响应的域响应的M函数文件,并在函数文件,并在MATLAB命令窗口中调用命令窗口中调用该文件。该文件。 创建创建M函数文件并调用的步骤如下:函数文件并调用的步骤如下: (1) 编写函数代码编写函数代码 func

48、tion y=Ex014(zeta) %EX014 画二阶系统时域曲线画二阶系统时域曲线 x=0:0.1:20; y=1-1/sqrt(1-zeta2)*exp(-zeta*x).*sin(sqrt(1-zeta2)*x+acos(zeta) plot(x,y) (2) 将函数文件保存为将函数文件保存为“Ex014.m”。 (3) 在在MATLAB命令窗口输入以下命令,则会出现命令窗口输入以下命令,则会出现f的计算值和绘的计算值和绘制的曲线:制的曲线: f=Ex014(0.3) 程序分析:程序分析: 第一行指定该文件是函数文件,文件名为第一行指定该文件是函数文件,文件名为“Ex014”,输入参

49、数为,输入参数为阻尼系数阻尼系数zeta,输出参数为时域响应,输出参数为时域响应y。 MATLAB的搜索过程的搜索过程 例:假设例:假设MATLAB执行指令执行指令cow (1) 检查检查cow是否是变量名。是否是变量名。 (2) 是否是内建函数(是否是内建函数(Built_in Function)。 (3) 是否是是否是cow所在所在M文件的一个子函数。文件的一个子函数。 (4) 是否是是否是cow所在所在M文件的一个私有函数。文件的一个私有函数。 (5) 是否是当前目录上的文件。是否是当前目录上的文件。 ? (6) 搜索路径上是否有搜索路径上是否有cow存在。存在。 2. 变量与表达式变量

50、与表达式 ?MATLAB的变量与类型的变量与类型 ?(1) 变量命名规则变量命名规则 变量名和函数名对字母的大小写敏感;变量名和函数名对字母的大小写敏感; 变量名的第一个字符必须是一个英文字母,最多变量名的第一个字符必须是一个英文字母,最多可包括可包括31个字符;个字符; 变量名可由英文字母、数字和下划线混合组成变量名可由英文字母、数字和下划线混合组成 ; 变量名中不得包含空格和标点,但可以由下连字变量名中不得包含空格和标点,但可以由下连字符符。 ?(2) 局部变量和全局变量局部变量和全局变量 ?局部变量:具有函数内部作用范围局部变量:具有函数内部作用范围 全局变量:可在几个函数和基本工作空间

51、之间共享,全局变量:可在几个函数和基本工作空间之间共享,具有全局作用范围具有全局作用范围 全局变量的声明:全局变量的声明: global 变量名变量名1 变量名变量名2 变量名间用空格分离。变量名间用空格分离。 ?全局变量在使用前必须在全局变量在使用前必须在MATLAB工作空间中申明,工作空间中申明,而在某个具体的而在某个具体的MATLAB函数中如果想用到该全局变函数中如果想用到该全局变量时,也必须在函数中申明。量时,也必须在函数中申明。 ?由于全局变量损害函数的封闭性,因此不提倡使用全由于全局变量损害函数的封闭性,因此不提倡使用全局变量。局变量。 ?(3) 永久变量永久变量 又称预定义变量(

52、又称预定义变量(Predefined Variable):): ans; eps; pi; realmax; realmin; i,j; nargin; nargout; inf; NaN; computer; flops; version 注:尽可能不对永久变量重新赋值,以免产生混淆注:尽可能不对永久变量重新赋值,以免产生混淆 ?MATLAB基本表达式基本表达式 变量变量=表达式表达式 MATLAB书写表达式的规则与书写表达式的规则与“手写算式手写算式”几乎相同。几乎相同。 例:例: 20.3+3.9*sin(x); y=sin(x)+cos(x); x, y ,z=peaks 3. 数据类

53、型数据类型 字符串数组、单元数组和结构数组字符串数组、单元数组和结构数组 最常用的最常用的数据类型数据类型只有双精只有双精度型和字度型和字符型,其符型,其他数据类他数据类型只在一型只在一些特殊条些特殊条件下使用件下使用数组数组 字符型字符型 数值型数值型 单元型单元型 结构型结构型 char numeric cell struct 用户对象用户对象 双精度型双精度型 存储型存储型Storage (包包double 括括int8, unit8, int16, user object unit16, int32, 稀疏型稀疏型 unit32) sparse 4. MATLAB 程序结构程序结构 ?

54、(1) 顺序结构顺序结构 (2) 循环结构循环结构 (3) 分支结构分支结构 顺序结构顺序结构 顺序结构就是依照顺序执行程序的各条语句。顺序结构就是依照顺序执行程序的各条语句。 语句在程序文件中的位置反映了程序的执行顺语句在程序文件中的位置反映了程序的执行顺序。序。 ?循环结构循环结构 (a) for-end循环循环 语法为:语法为: for x =array 可执行语句可执行语句 end ?循环执行的次数为固定的。循环执行的次数为固定的。 ?循环次数由数组循环次数由数组(array)的列数决定。的列数决定。例:例: for ii=1:10 x(ii)=ii; end; x = 1 2 3 4

55、 5 6 7 8 9 10 说明:说明: ?for循环不会因为在循环体内对循环变量重新循环不会因为在循环体内对循环变量重新赋值而终止;赋值而终止; for循环结构可按需要嵌套使用。循环结构可按需要嵌套使用。 技巧:技巧: ?为得到高效代码,尽量提高代码的向量化程度,为得到高效代码,尽量提高代码的向量化程度,避免使用循环结构;避免使用循环结构; ?为得到最快的运算速度,在循环指令前尽量对为得到最快的运算速度,在循环指令前尽量对数组进行预定义。数组进行预定义。 例例15 利用利用for循环求循环求1!+2!+3!+ ? +5!的值!的值 sum=0; for i=1:5 pdr=1; for k=

56、1:i pdr=pdr*k; end sum=sum+pdr; end sum = 153 ?while-end循环循环 while循环将循环体中的语句循环执行不定次数。循环将循环体中的语句循环执行不定次数。 语法为:语法为: while 表达式表达式 循环体语句循环体语句 end 说明:说明: (1) 表达式一般是由逻辑运算和关系运算以及一般表达式一般是由逻辑运算和关系运算以及一般运算组成的,以判断循环的进行和停止;运算组成的,以判断循环的进行和停止; (2) 只要表达式的值非只要表达式的值非0,继续循环;直到表达式,继续循环;直到表达式值为值为0,循环停止。,循环停止。 例例16 用用wh

57、ile循环求循环求1100间整数的和间整数的和 sum=0; i=1; while i=100 sum=sum+i; i=i+1; end sum sum = 5050 ?分支结构分支结构 ?if-else-end分支结构分支结构 if else end语句有语句有3种形式种形式 ? if 表达式表达式 执行语句执行语句 end ? if 表达式表达式 是是 语句语句1 else 否否 语句语句2 end ? if 表达式表达式1 语句语句1 elseif 表达式表达式2 语句语句2 elseif 表达式表达式3 语句语句3 else 语句语句n end 说明:说明: 这种结构实现了一种多路选

58、择,比较复杂。这种结构实现了一种多路选择,比较复杂。 可替代一般高级语言中的可替代一般高级语言中的switch-case-end语句语句 例例17 编写编写m函数,计算函数值函数,计算函数值x=-3:0.1:3; 并绘图并绘图 ? 2x 2f(x)=? 0 (-1x=10) if x=1 y=2*x.2; plot(x,y) elseif -1x=1)?switch-case-end分支结构分支结构 switch 开关表达式开关表达式 case 表达式表达式1 语句段语句段1 case表达式表达式2 语句段语句段2 . otherwise 语句段语句段n end 说明:说明: ?将开关表达式依

59、次与将开关表达式依次与case后面的表达式进行比较,如果后面的表达式进行比较,如果表达式表达式1不满足,则与下一个表达式不满足,则与下一个表达式2比较,如果都不满比较,如果都不满足则执行足则执行otherwise后面的语句段后面的语句段n;一旦开关表达式与;一旦开关表达式与某个表达式相等,则执行其后面的语句段。某个表达式相等,则执行其后面的语句段。 开关表达式只能是标量或字符串。开关表达式只能是标量或字符串。 case后面的表达式可以是标量、字符串或单元数组,如后面的表达式可以是标量、字符串或单元数组,如果是单元数组则将开关表达式与单元数组的所有元素进果是单元数组则将开关表达式与单元数组的所有

60、元素进行比较,只要某个元素与开关表达式相等,就执行其后行比较,只要某个元素与开关表达式相等,就执行其后的语句段。的语句段。 ?流程控制语句流程控制语句 在程序执行中,有一些可以控制程序流程的命在程序执行中,有一些可以控制程序流程的命令,下面主要介绍令,下面主要介绍break, continue, return, pause, keyboard和和input命令。命令。 (a) break命令命令 break命令可以使包含命令可以使包含break的最内层的的最内层的for或或while语语句强制终止,立即跳出该结构,执行句强制终止,立即跳出该结构,执行end后面的命令,后面的命令,break命令

温馨提示

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

评论

0/150

提交评论