1、2019/5/14,1,图 形 处 理,MATLAB 7语言除了有强大的矩阵处理功能之外,它的绘图功能也是相当强大的。 学会使用MATLAB 7的图形处理功能,包括基本的绘图命令、图形的简单控制、图形窗口的编辑以及图形的高级控制等。(各种图形注释方法,三维图形的绘制方法),2019/5/14,2,具体内容,基本的绘图命令 各种图形注释方法 三维图形的绘制方法 特殊一些特殊图形的绘制 图形的高级控制技巧,2019/5/14,3,1. 基本的绘图命令,基本的绘图命令 绘图的一般步骤 绘制二维曲线图 极坐标图形的绘制 多个图形的绘制方法 曲线的色彩、线型和数据点型,2019/5/14,4,(1)基本
2、的绘图命令,绘制基本线性图的函数表,2019/5/14,5,(2)绘图的一般步骤,基本的绘图步骤,2019/5/14,6,(3)绘制二维曲线图,二维曲线图在MATLAB 7中的绘制是最为简便的。如果将X轴和Y轴的数据分别保存在两个向量中,同时向量的长度完全相等,那么可以直接调用函数进行二维图形的绘制。在MATLAB 7中,使用plot函数进行二维曲线图的绘制。,2019/5/14,7,绘制二维曲线图, x= 0:0.01:10; y=tan(x); plot(x,y) ,2019/5/14,8,(4)极坐标图形的绘制,MATLAB提供了polar函数来在极坐标下绘制图形 : x= 0:0.01
3、:10; y1=sin(x); y2 = cos(x-2.5); polar(y1,y2,-r+) ,2019/5/14,9,(5)多个图形的绘制方法,subplot函数 可以实现多个图形的绘制: x = 0:.1:20; subplot(2,2,1) plot(x,sin(x); ,2019/5/14,10,多个图形的绘制方法, x = 0:.1:20; subplot(2,2,2) plot(x,cos(x); ,2019/5/14,11,多个图形的绘制方法, subplot(2,2,3) x = 0:.1:2; y1=tan(x); plot(x,y1,-b*); ,2019/5/14,
4、12,(6)曲线的色彩、线型和数据点型,曲线的色彩、线型和数据点型参数定义,o: 圆 v: 下三角 : 上三角 : 右三角 p: 正五边形,w: 白色 k: 黑色,Plot(x,y,s),2019/5/14,13,2. 图形注释,图题的标注 坐标轴的标签 文本标注和交互式文本标注 图例的添加 坐标网格的添加 使用矩形或是椭圆在图形中圈出重要部分,2019/5/14,14,(1) 图题的标注,在MATLAB中,通常可以使用3种方式给图形添加图题: 使用Insert 菜单中的Title命令; 使用属性编辑器(Property Editor); 使用title函数。,2019/5/14,15,图题的
5、标注, x = 0:.1:2; y1=sin(x); y2 = sin(x-0.25); y3 = sin(x-0.5); plot(x,y1,-.b, x,y2,-r*, x,y3,-.gh) title(There three lines) ,2019/5/14,16,(2) 坐标轴的标签,在MATLAB 7中,可以使用如下3种方式给图形的坐标轴添加标签: 使用Insert菜单下的Label选项; 使用属性编辑器(Property Editor); 使用MATLAB 7的添加标签命令;,2019/5/14,17,坐标轴的标签添加举例,使用属性编辑器(Property Editor)添加坐标
6、轴标签打开Tools菜单,选择Edit Plot命令,激活图形编辑状态。 在图形框内双击空白区域,调出属性编辑器;也可以采取在图形框内右击,从弹出的菜单中选择Properties 项的方式调出属性编辑器;或者是在View菜单中选择Property Editor项。,2019/5/14,18,(3)文本标注和交互式文本标注,用户可以在MATLAB 7图形窗口的任意地方添加文本注释,从而更好地解释图形窗口的数据。MATLAB 7提供了text函数和gtext函数来进行文本标注。其中gtext函数的使用形式更为灵活,可以实现交互式文本标注。,2019/5/14,19,文本标注举例, x=linspa
7、ce(-3,5,100); y=cos(x); z=sin(x); plot(x,y,x,z) title(一条正弦曲线和一条余弦曲线) xlabel(x的取值范围) ylabel(Y和Z的值) ,2019/5/14,20,(4)图例的添加,为了更好地区分所绘制的多条曲线,可以使用图例加以说明,对它们表示的数据进行更准确的区分。可以使用如下3种方法生成图例: 打开Insert 菜单中并选择Legend命令; 单击工具栏中的legend图标; 使用legend函数。,2019/5/14,21,图例的添加 举例,2019/5/14,22,(5)坐标网格的添加,在图形绘制过程中,为了精确地知道图形上
8、某点的坐标,需要绘制坐标网格来定位,MATLAB 7语言中提供了grid函数来实现这一功能: grid off命令关闭坐标网格; grid on命令打开坐标网格 grid mirror命令使用更细化的网格;,2019/5/14,23,坐标网格的添加举例, x=linspace(-5,5,100); y=x.4+22*x.2-6*x+10; plot(x,y) grid on ,2019/5/14,24,(6) 使用矩形或是椭圆在图形中圈出重要部分,用户可以使用矩形或是椭圆在图形中圈出特别的区域,从而使得该区域能引起特别的注意。当其中的一个矩形或是椭圆被选中时,用户可以移动并改变它的大小,或是右
9、击它,在弹出的快捷菜单中用户可以选择改变它的属性和外观。,2019/5/14,25,应用举例,当右击矩形或是椭圆时,将弹出一个菜单,2019/5/14,26,3. 三维图形的绘制,MATLAB语言提供了三维图形的处理功能。与二维图形相似,绘制三维图形时可以使用MATLAB语言提供的相关函数: 三维线图指令plot3 三维网线图和曲面图 三维网线图 三维曲面图,2019/5/14,27,(1)三维线图指令plot3, % 该程序用于绘制三维的螺旋曲线图 t = 0:pi/50:20*pi; plot3(sin(t),cos(2*t),sin(t)+cos(t),2019/5/14,28,(2)
10、三维网线图 (与plot3区别,可以绘制一区间内完整曲面,而非单根曲线),使用mesh函数来绘制三维网格图形: z=peaks(50); mesh(z); ,2019/5/14,29,(3)三维曲面图,使用surf函数来绘制三维表面图形 : X,Y=meshgrid(-4:0.2:4); Z=exp(-0.5*(X.2Y.2); surf(X,Y,Z) ,2019/5/14,30,4. 特殊图形的绘制,条形图和面积图(Bar and Area Graphs) 饼形图(Pie Charts) 离散型数据图 方向和速度矢量图形 等高线的绘制(Contour Plots),2019/5/14,31,
11、(1)条形图和面积图,条形图和面积图用于绘制向量和矩阵数据,这两种图形可以用来比较不同组数据的在总体数据中所占的比例,其中条形图适于表现离散型数据,而面积图适于表现连续型数据。,2019/5/14,32,条形图举例,集合式条形图的绘制 y=1 2 3 4 5 6 7 8 9 10 bar(y),2019/5/14,33,(2)饼形图,在统计学中,人们经常要用到饼形图来表示各个统计量占总量的份额,饼形图可以显示向量或矩阵中的元素占所有元素总和的百分比,MATLAB提供了pie函数和pie3函数,分别用于绘制二维饼形图和三维饼形图。,2019/5/14,34,(3)离散型数据图,MATLAB 7提
12、供了一系列适于表现离散型数据的函数。 其中常用的主要有stem 函数、stem3函数和stairs函数。,2019/5/14,35,离散型数据图举例,使用 stem(y)函数来绘制句柄状图形 。 y=rand(20,1); stem(y) ,2019/5/14,36,(4)方向和速度矢量图形,MATLAB 7提供了一些函数用于绘制方向矢量和速度矢量图形,这些函数有compass、feather、quiver和quiver3。,2019/5/14,37,方向和速度矢量图形举例,用compass函数绘制矢量图形 : w=0:0.1:6; z=sin(w).*exp(j*w); compase(z)
13、 ,2019/5/14,38,(5)等高线的绘制,等高线函数为创建、显示并标注由一个或多个矩阵确定的等值线。,2019/5/14,39,等高线的绘制举例,使用contour函数绘制等高线图形: x,y,z=peaks; contour(x,y,z) ,2019/5/14,40,5. 图形的高级控制,视点控制和图形的旋转 颜色的使用 颜色映像理解 颜色映像使用 颜色映像显示 颜色映像的建立和修改 光照控制,2019/5/14,41,(1)视点控制和图形的旋转,为了使图形的效果更逼真,有时需要从不同的角度观看图形,MATLAB 7语言提供了view、viewmtx和rotate3d等3个命令进行操
14、作。用户可以在命令窗口中调用这3个函数。其中,view函数主要是从不同的角度观察图形;viewmtx给出指定视角的正交转换矩阵;而rotate3d函数可以让用户方便地用鼠标来适时旋转视图。,2019/5/14,42,视点控制举例,view函数的使用 : X,Y=meshgrid(-5:0.2:5); Z=exp(0.5*(X.2-Y.2); surf(X,Y,Z) view(30,60) ,鼠标旋转,2019/5/14,43,(2)颜色的使用,颜色映像理解 MATLAB 7有一个叫颜色映像的数据结构来代表颜色值。颜色映像定义为一个有3列和若干行的矩阵。利用0到1之间的数,矩阵的每一行都代表了一
15、种色彩。任一行的数字都指定了一个RGB值,即红、黄、蓝3种颜色的强度,形成一种特定的颜色。,2019/5/14,44,颜色映像理解1,2019/5/14,45,颜色映像理解2,2019/5/14,46,颜色映像使用,句colormap(M)将矩阵M作为当前图形窗口所用的颜色映像。例如,colormap(cool)装入了一个有64个输入项的cool颜色映像。colormap default装入了默认的颜色映像(hsv)。 函数plot、plot3、contour和contour3不使用颜色映像,它们使用列在plot颜色和线形表中的颜色。而大多数其他绘图函数,比如mesh、surf、fill、pc
16、olor和它们的各种变形函数,使用当前的颜色映像。,2019/5/14,47,颜色映像显示,可以用多种途径来显示一个颜色映像。其中一个方法是观察颜色映像矩阵的元素: hot(8) ans =0.3333 0 00.6667 0 01.0000 0 01.0000 0.3333 01.0000 0.6667 01.0000 1.0000 01.0000 1.0000 0.50001.0000 1.0000 1.0000 ,2019/5/14,48,颜色映像的建立和修改,颜色映像就是矩阵,意味着你可以象其他数组那样对它们进行操作。函数brighten就利用这一点通过调整一个给定的颜色映像来增加或减
17、少暗色的强度。 用户可以通过生成m3的矩阵mamap来建立自己的颜色映像,并用colormap(mymap)来安装它。颜色映像矩阵的每一个值都必须在0和1之间。如果企图用大于或小于3列的矩阵或者包含着比0小比1大的任意值,函数colormap会提示一个错误然后退出。,2019/5/14,49,(3)光照控制,MATLAB 7语言提供了许多函数在图形中进行对光源的定位并改变光照对象的特征。,2019/5/14,50,光照控制举例,本例首先绘制一个膜面图,然后使用位置向量 0 -2 1 设置光源的方向。 z=peaks(50); surf(z) light(Position,0 -2 1) ,20
18、19/5/14,51,绘图(Plot )对象举例, x,y,z = peaks; c,h = contour(x,y,z); set(h,LineWidth,3,LineStyle,:) ,2019/5/14,52,绘制饼状图,x=1 3 0.5 2.5 2; explode=0 1 0 0 0; pie(x,explode),2019/5/14,53,绘制矢量图,X,Y=meshgrid(-2:.2:2); Z=X.*exp(-X.2-Y.2); DX,DY=gradient(Z,.2,.2); contour(X,Y,Z); hold on; quiver(X,Y,DX,DY),2019/
19、5/14,54,绘制误差棒形图,x=0:0.2:4*pi; y=sin(x); e=0:1/(length(x)-1):1; errorbar(x,y,e),2019/5/14,55,绘制圆柱 球体,cylinder;t=0:pi/10:2*pi; X,Y,Z=cylinder(2+cos(t); surf(X,Y,Z)m,n,p=sphere(50); t=abs(p); surf(m,n,p,t),2019/5/14,56,(2) 图形对象属性的获取和设置,get函数 set函数 默认属性,2019/5/14,57,get函数,在MATLAB 7中,使用get函数可以得到对象的属性及其属性
20、值,其通常的调用格式为 : get(handle, PropertyName )。 关于它的详细使用方法,用户可以参见get函数的帮助信息。,2019/5/14,58,set函数,在MATLAB 7中,使用set函数可以设置对象的属性值,其通常的调用格式如下。 set(H,PropertyName,PropertyValue)命令设置PropertyName的属性为PropertyValue。 set(H,a)命令中,a为结构型变量,字段名为图形对象的属性名,字段值为映像的属性值。 set(H,PropertyName1,PropertyValue1,PropertyName2,Propert
21、yValue2,.)命令同时设置多个属性的值。,2019/5/14,59,1. M文本编辑器的基本知识,M文本编辑器 M文件的基本属性 M文件的组成部分 脚本式M文件 函数式M文件,2019/5/14,60,(1)M文本编辑器,M文件的语法类似于一般高级语言,是一种程序化的编程语言,但是,与传统的高级语言相比,M文件又有自己的特点。它只是一个简单的ASC型码文本文件,因此,它的语法比一般的高级语言要简单,程序也容易调试,并且有很好的交互性。,2019/5/14,61,M文件的基本属性,M文件有两种,一种为脚本式(Script),一种为函数式(Function) 。 函数M文件必须满足一些标准,
22、另外,它们还应该满足一些MATLAB 7的属性。主要有以下几点: 函数式M文件名和出现在文件的第一行的函数名必须相同。实际上,MATLAB 7忽略了第一行的函数名,并且根据存储在硬盘上的文件名来执行函数。 ,2019/5/14,62,M文件的组成部分,函数式M文件的组成部分。 调出Medit窗口,在里边输入如下内容: function f = fact(n) %函数的定义行 % Compute a factorial value. %H1行 % FACT(N) returns the factorial of N, %帮助文本 % usually denoted by N! % Put sim
23、ply, FACT(N) is PROD(1:N). %注释 f = prod(1:n); % 函数体,2019/5/14,63,M文件的组成部分及其功能,M文件的组成部分及其功能,2019/5/14,64,(2)脚本式M文件,用户可以将需要重复输入的所有命令按顺序放到一个扩展名为m的文本文件下,每次运行时只要输入该M文件的文件名即可。 用户自己创建的M文件的文件名要避免与MATLAB 7的内置函数和工具箱中的函数重名,以免发生内置函数被替换的情况。,2019/5/14,65,脚本式M文件举例,本脚本式M文件绘制一个正弦曲线:%此文件用于绘制【2pi,2pi】区间的正弦曲线图 x=-2*pi:
24、0.05:2*pi; y=sin(x); plot(x,y,c+) legend(正弦曲线图),2019/5/14,66,(3)函数式M文件,函数式M文件一般都要自带参数,并且有返回结果 。 函数式M文件的第一行都是以function开始,说明此文件是一个函数。函数式M文件中的变量都不是全局变量,仅在函数运行期间有效,函数运行完毕之后,它所定义的变量将从工作区间中清除。,2019/5/14,67,函数式M文件举例,例 判断某一年是否为闰年。 解:调出Medit窗口,在里边输入如下内容。 %该函数用于判断某一年是否为闰年 %使用格式为isleapea(y),其中y是用户所要计算的年份 funct
25、ion isleapyear(year) sign=0; if rem(year,4)=0sign=sign+1; end,if rem(year,100)=0sign=sign-1;endif rem(year,400)=0sign=sign+1;endif sign=1fprintf(%4d year is a leap year.n,year)else fprintf(%4d year is not a leap year.n,year) end,2019/5/14,68,2. 控制流,最简单的程序控制就是顺序结构,用户依次输入命令语句即可。 MATLAB 7语言还提供了4种高级的控制结
26、构。它们是:if-else-end结构、switch-case-otherwise-end结构、for循环和while循环。,2019/5/14,69,(1)顺序结构,顺序结构是最简单的程序结构,用户在编写好程序之后,系统将按照程序的物理位置顺次执行。 a=1; b=2; c=3; s1=a+b s2=s1+c s3=s2/s2,2019/5/14,70,(2)ifend语句,只有一种选择时的情况 if 表达式 执行语句 end,2019/5/14,71,ifend语句,有两种选择时的情况 if 表达式 执行语句1 else执行语句2 end,2019/5/14,72,ifend语句,有3种或
27、3种以上选择时的情况 if 表达式1表达式1为真时的执行语句1 elseif表达式2表达式2为真时的执行语句2 elseif表达式3表达式3为真时的执行语句3 elseif else所有的表达式都为假时的执行语句 end,2019/5/14,73,(3) switchcaseend语句,switch开关语句case条件语句,执行语句,执行语句case 条件语句1,条件语句2, 条件语句3,执行语句,执行语句otherwise, 执行语句,执行语句end,2019/5/14,74,(4) trycatchend,try-catch模块给用户提供了一种错误捕获机制。换句话说,利用try-catch
28、模块,MATLAB 7编译系统发现的错误将被其捕获,用户可以控制MATLAB 7怎样对发生的错误进行处理。 try 执行语句1 catch 执行语句 2 end,2019/5/14,75,(5) for循环语句,For语句是一种循环语句,可以让用户很方地实现循环操作,从而可以从容地应付大规模的循环语句。 for i =表达式,执行语句,执行语句 end,2019/5/14,76,(6)while循环语句,与for循环不同,while循环的判断控制可以是逻辑判断语句,因此,它的循环次数可以是一个不定数。这样就赋予了它比for循环更广泛的用途。 while表达式执行语句 end,2019/5/14,77,(7) 人机交互命令,终止命令break和return 继续命令continue 等待用户反应命令pause echo命令 用户输入提示命令input 请求键盘输入命令keyboard,