第9章二维图形63

上传人:仙*** 文档编号:67998398 上传时间:2022-04-01 格式:PPT 页数:61 大小:579.50KB
返回 下载 相关 举报
第9章二维图形63_第1页
第1页 / 共61页
第9章二维图形63_第2页
第2页 / 共61页
第9章二维图形63_第3页
第3页 / 共61页
点击查看更多>>
资源描述
第九讲第九讲 MATLAB使用详解使用详解2012学年选修课学年选修课M Matlab2012第9讲 二维图形 MATLAB7.0不仅具有强大的数值计算功能,在数据可视化方面也是独占鳌头,可以满足广大用户各方面的需求。对于普通用户来说,抽象的数据往往是晦涩难懂的;但MATLAB通过图形编辑窗口和绘图函数方便地绘制二维、三维甚至多维的图形,把杂乱离散的数据以形象的图形显示出来,便大大有助于用户了解数据的性质和内在联系。 本讲着眼于MATLAB7.0的二维图形绘制,二维图形是MATLAB图形的基础,也是应用最广泛的图形类型之一,其主要内容包括: MATLAB7.0图形窗口的使用; 二维图形的绘制; 二维图形的编辑; 以及特殊二维图形的绘制;第9讲 二维图形9.1.1 二维图形绘图步骤 在MATLAB中用图形函数绘图的一般操作步骤分为7步,如表所示。下面以绘制一个简单三角函数的图形为例,详细介绍各个步骤。应用举例:例:用图形表示y=cosx-sinx,x-90,901)准备图形数据:选定数据的范围,选择对应范围的自变量,计算相应的函数值。 x=-pi/2:0.1:pi/2; y=cos(x)-sin(x);2)选择图形的显示位置:系统默认图形窗口为“Figure 1”,如果需要在图形窗口中并列显示多个子窗口,则需要使用subplot指令来选择子图号。 figure(6); subplot(3,2,5)3)调用绘图指令并设置参数。此步是主要绘图步骤,调用plot函数绘制图形。 plot(x,y)4)选择线形和标记属性。此步既可单独使用图形句柄设置,也可以与步骤3)同时进行。 plot(x,y,k-.*)5)设置坐标轴范围及网格线。 axis(-pi,pi,-3,3) grid on6)给出图形注释。 title(first figure); legend(y=cos(x)-sin(x);7)图形输出。使用file中的save as选项应用举例:9.1.2 绘制二维图形 基本的二维绘图函数是plot函数,其余的函数都是围绕其发展扩充形成的。下面介绍MATLAB7.0中调用plot函数的3种常用方式。 1) plot(X,S):参数 X 表示不同类型的数据,可以是实数向量、实数矩阵或复数矩阵;参数S是表示图形属性的字符串,图形属性包括线型、颜色和数据点型等,若缺省图形显示MATLAB默认设置。 2) plot(X,Y,S)一般来说,X数据作为横坐标,Y数据作为纵坐标数据。 3) plot(X1,Y1,S,X2,Y2,S,X3,Y3,S,)同时在图形窗口中绘制多条互不影响的连续曲线。应用举例:例1:x=-pi:0.5:pi; plot(X)例2:x=magic(4); plot(x)9.1.3 快速绘图函数 通过调用plot函数,用户可以把数值矩阵用图形表示出来,但在下面两种情况下,函数plot并不适用: 1)用户不想刻意控制自变量范围和函数值范围,而只是想大致了解数据的图形轮廓; 2)由于数据资料的不足,用户不能够掌握数据的细微变化规律和相互联系的时候。 此时,用户可以使用MATLAB提供的另外两个函数:fplot和ezplot。这两个函数称为“便捷绘图函数”,使用这两个函数进行绘图时,用户不需要设置,仅仅让系统内部自动调整自变量的范围和间隔。应用举例: 例:绘制函数y=x(sinx-cosx)的图形。 syms x; y=x(sin(x)-cos(x); ezplot(y) 注意:使用ezplot函数时不可以在一个窗口绘制多个图形。ezplot常用来绘制字符串表达式或符号表达式定义的函数。-6-5-4-3-2-10123411.522.533.544.555.56xxsin(x-cos(x)9.1.4 绘制子图 MATLAB7.0的绘图功能十分灵活,不但可以在一个图形窗口中绘制多个完全独立的子图,称为绘制子图;也允许用户在一个图形中绘制多条曲线,称为图形叠绘。 当用户需要进行相关图形的比较或者是同类图形的分析时,比较方便的方式是把若干图形在同一个图形窗口显示出来。针对用户的这一点需要,MATLAB7.0提供了子图的绘制功能,并约定了符合常规思维习惯的分栏方式。例如,用户希望比较函数的平方、立方和四次方的函数曲线,那么可以输入如下代码,3个函数的图形分别作为子图显示在同一个图形窗口中。子图绘制函数 subplot(m,n,p):把图形窗口分割为MN个子图,p为用户选择的子图的绘图位置。 subplot(m,n,p,replace)删除原坐标轴创建新坐标轴。应用举例: x=-pi:0.5:pi; y1=x.2; y2=x.3; y3=x.4; subplot(1,3,1)%子图绘图函数 plot(x,y1); title(y=x2) subplot(1,3,2) plot(x,y2); title(y=x3) subplot(1,3,3); plot(x,y3) title(y=x4)-505012345678910y=x2-505-40-30-20-100102030y=x3-5050102030405060708090100y=x4应用举例:例:将一单图分割成9个子图,并选择子图3、5、7分别绘制正切、余旋和正旋函数的图形。 subplot(3,3,3) ezplot(tan) subplot(3,3,5) ezplot(cos) subplot(3,3,7) ezplot(sin) subplot(3,3,5,replace) %用新创建的空坐标轴代替原子图5的坐标轴。 subplot(1,1,1)或clf指令。%取消分图,恢复单图模式。应用举例:例:非均匀分图在Matlab命令窗口中输入 subplot(1,3,2 3) subplot(1,3,1)00.20.40.60.8100.10.20.30.40.50.60.70.80.9100.5100.10.20.30.40.50.60.70.80.91应用举例:在Matlab命令窗口中输入: subplot(2,2,2 4) subplot(2,2,1) subplot(2,2,3)00.5100.10.20.30.40.50.60.70.80.9100.5100.20.40.60.8100.5100.20.40.60.819.1.5 图形叠绘9.1.4小节已经解决了“一个窗口绘制多图”的问题,本小节将介绍如何“一个坐标轴绘制多曲线”。在实际工作中,用户常常需要即已经绘制完成的图形上再次添加或删减图形,这时可以调用hold函数,hold函数的调用格式和功能如下:hold on:启动图形保持功能,在原图的基础上,再次绘制的图形将全部添加到图形窗口中,并自动调整坐标轴范围;hold off:关闭图形保持功能;hold:在图形保功能保持和关闭状态之间切换。应用举例:例: x=0:0.1:5; y1=x; plot(x,y1) hold on y2=5-x; plot(x,y2) hold off y2=5-x; plot(x,y2) 00.511.522.533.544.5500.511.522.533.544.5500.511.522.533.544.5500.511.522.533.544.55 当多次在“开启”和“关闭”之间切换图形保持状态后,在判断状态时有可能出错,这时可以使用ishold函数查询状态。 ishold ans = 09.1.6 绘制双Y轴图形 当用户需要把同一个自变量的两个、甚至多个不同量纲、不同数量级的函数的图形绘制在同一个图形中时,使用常用的单坐标是不能有效解决问题的,但是调用双坐标图形绘制函数plotyy却可以方便地达到目的。plotyy函数具体的调用格式及具体功能如下:1)plotyy(x1,y1,x2,y2):以左、右不同纵轴绘制x1 y1、x2 y2两条曲线; 说明:x1-y1数据对绘制左坐标轴,x2-y2数据对绘制右坐标轴,如果用户不使用底层绘图指令改变坐标属性,则坐标范围和刻度都是系统自动产生的。9.1.6 绘制双Y轴图形 2)plotyy(x1,y1,x2,y2,FUN):以左、右不同纵轴绘制x1 y1、x2 y2两条曲线,且两曲线形式由FUN指定; 3)plotyy(x1,y1,x2,y2,FUN1,FUN2):以左、右不同纵轴绘制x1 y1、x2 y2两条曲线,且两曲线形式分别由FUN1和FUN2指定。 说明:FUN、FUN1,FUN2是Matlab7.0允许的所有可以接受xy数据对的二维绘图函数。应用举例:例:绘制以下两个函数的图形y1=100e-x/10sinx和y2=1/10e-x/2sin(10 x) x=0:0.02:30; y1=100*eps(-0.1*x).*sin(x); plot(x,y1)051015202530-5-4-3-2-1012345x 10-14 y2=0.1*eps(-0.5*x).*sin(10*x); plot(x,y2) plotyy(x,y1,x,y2,plot)%由于两个函数曲线都是调用plot函数绘制一般二维曲线,故plotyy函数中的FUN参数是相同的plot051015202530-2-1.5-1-0.500.511.52x 10-16051015202530-505x 10-14051015202530-202x 10-169.1.7 交互式绘图函数 为了方便绘制和分析图形,MATLAB7.0不但提供了plot、plotyy等图形绘制函数,还允许用户使用键盘鼠标等外设进行直接绘图。本小节介绍两个相关的函数:ginput。 ginput函数是通过鼠标来读取图形中任意一点的坐标,其常用调用格式如下:1)x,y = ginput(n):鼠标在图形上取n个数据点的坐标值(n为正整数),并保存在x,y中;2)x,y = ginput:鼠标在图形上取若干数据点的坐标值,直到用户按“回车”键结束取点,并保存在x,y中。应用举例: x=-pi:.005:pi; y=sin(x); plot(x,y) a,b=ginput(2)%把鼠标移动到曲线的极值处(目视)a = 1.5576 1.5576b = 0.9971 0.9971说明:ginput函数只适用于二维图形。-4-3-2-101234-1-0.8-0.6-0.4-0.200.20.40.60.819.2 编辑二维图形为了使图形更加清晰易读并增加表现力,用户需要在完成图形初步绘制后,对图形的若干属性进行设置,本节主要介绍如何设置以下常用二维图形属性:曲线线型、颜色和数据点型;图题的标注 坐标轴的标签 文本标注 图例的添加 坐标网格的添加 9.2.1 曲线的色彩、线型和数据点型 曲线的色彩、线型和数据点型参数定义 颜 色 符 号含 义数 据 点 型含 义线 型含 义b蓝色.点-实线g 绿色xX符号:点线r 红色+号-.点划线c 篮绿色h六角星形-虚线m 紫红色*星号(空白)不画线y 黄色s方形k 黑色d菱形299.2.2 图题的标注 在MATLAB中,通常可以使用3种方式给图形添加图题:使用Insert 菜单中的Title命令;使用属性编辑器(Property Editor);使用title函数。应用举例: 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) 在MATLAB 7中,可以使用如下3种方式给图形的坐标轴添加标签:使用Insert菜单下的Label选项;使用属性编辑器(Property Editor); 使用MATLAB 7的添加标签命令;9.2.3 图题的标注应用举例 使用属性编辑器(Property Editor)添加坐标轴标签 打开Tools菜单,选择Edit Plot命令,激活图形编辑状态。在图形框内双击空白区域,调出属性编辑器;也可以采取在图形框内右击,从弹出的菜单中选择Properties 项的方式调出属性编辑器;或者是在View菜单中选择Property Editor项。应用举例 x=linspace(-3,5,100); y=cos(x); z=sin(x); plot(x,y,x,z) title(一条正弦曲线和一条余弦曲线) xlabel(x的取值范围) ylabel(Y和Z的值) 9.2.5 图例的添加 为了更好地区分所绘制的多条曲线,可以使用图例加以说明,对它们表示的数据进行更准确的区分。可以使用如下3种方法生成图例:打开Insert 菜单中并选择Legend命令;单击工具栏中的legend图标;使用legend函数。图例的添加 举例9.2.6 坐标网格的添加 在图形绘制过程中,为了精确地知道图形上某点的坐标,需要绘制坐标网格来定位,MATLAB 7语言中提供了grid函数来实现这一功能:grid off命令关闭坐标网格; grid on命令打开坐标网格 grid(AX,)命令使用AX坐标系代替当前坐标系。 坐标网格的添加举例 x=linspace(-5,5,100); y=x.4+22*x.2-6*x+10; plot(x,y) grid on 9.3 绘制和编辑特殊图形 在工程实践中记录分析数据,在教学科研中演示统计结果、常需要使用一些特殊图形。由于图形的特殊性,故仅仅调用plot函数将很难绘制。针对这种情况,MATLAB提供了若干特殊图形绘制函数。本节主要介绍特殊图形的绘制方法,主要图形包括:条形图、区域图、饼状图、柱状图、离散图、罗盘图、羽毛图、轮廓图以及箭头图等。9.3.1 绘制编辑条形图 条形图可以显示矢量数据和矩阵数据,如果用户需要表现跨时间段的运算结果、不同数据的比较结果以及部分相对于整体比较结果时,常会用到条形图绘制离散数据。MATLAB7.0中提供了条形图绘制函数bar,函数bar有4种,应用举例: 例:分别新建向量x1,2,3,4,5和矩阵y1,2,3;4,5,6;7,8,9在命令窗口中输入 x=1,2,3,4,5 y=1,2,3;4,5,6;7,8,9 bar(x) bar(y)1234500.511.522.533.544.551230123456789说明:可以看出bar(y) 如果y是向量,则绘制y的每一个元素;如果y是一个矩阵,则把矩阵分解成n个行向量,分别以其对应的行数为横坐标进行绘制应用举例: bar(y,stack)说明:选择参数stack是绘制累计直条图,其特点是将矩阵中每一行元素显示为一个条形,而非通常的一个元素显示一条。在累计条形中,每个条形都被分为n段,n即为矩阵的列数。优势是:矩阵中的同一行所有元素都在一个条形中累计显示,从而较为清楚的查看各个元素在其所在行中所占的比例。1230510152025应用举例:接上例在Matlab命令窗口中继续输入如下代码: subplot(1,2,1) bar3(x) subplot(1,2,2) bar3(y) subplot(1,2,2) xlabel(x) ylabel(y) zlabel(z)1234502461231230510 xyz应用举例: subplot(1,2,1) bar3(x,group) subplot(1,2,2) bar3(y,group)说明:参数group可以绘制分组三维条形,对于向量x图形较之前无变化,但对于矩阵y,图形发生了变化,被分组12345024612302468109.3.2 绘制编辑饼状图 饼状图主要用于显示矩阵中每个元素在所有元素总和中所占的百分比及各部分之间的比例关系。MATLAB7.0提供了pie和pie3两个函数分别用于绘制二维和三维饼状图。pie函数的调用格式和功能如下。 pie(x):绘制向量x的饼状图,x中每一个元素为饼中的一个扇形。 pie(x,explode):explode代表与x同维的矩阵,explode中非0元素对应x中的元素“外突”,方向为扇形圆弧外法线方向。应用举例: 例:甲乙丙丁四个小区的物业管理费分别是0.1、0.2、0.25和0.3元/m2/月,使用饼状图进行4个小区物业费比较。 x=0.1,0.2,0.25,0.3; pie(x) 说明:显示的图形并不是一个圆饼而是缺失了一块,因为原始数据之和并没有达到1,而系统也并不进行归一化的标准处理。10%20%25%30%9.3.3 绘制编辑柱状图 柱状图是除了条形图之外,另一种用来表示数据值分布的有效手段。用于绘制柱状图的常用MATLAB函数是hist和rose。区别两者的是使用坐标系不同,前者一般用于直角坐标,而后者一般用于极坐标的柱状图绘制。 柱状图函数的绘制过程为:计算一定数据范围之内的元素个数,再将每个数据范围在图形窗口中显示为相应的矩形箱,其高度(使用hist函数时称呼)或长度(使用rose函数时称呼)表示数值落在指定范围中的元素个数。应用举例: 例:绘制直角坐标中的柱状图 x=randn(5000,1);所有5000个随机数主要集中在x0处 y=randn(1000,5);包含5个颜色各异的独立数据箱9.3.4 绘制编辑离散数据点图形离散数据杆状图主要用来表示离散数据的数据特性和内在联系,在MATLAB中,如果调用plot函数对于离散数据绘图,那么系统默认把若干离散的数据点用直线连接,但是用户有时并不希望看到这种连续的图形,这时,最好的方法就是使用stem函数代替plot函数绘图。stem函数用圆点表示每个数据点,再用线段把圆点和基准线连接,图形类似火柴棒,所以又称stem函数图形为火柴杆图。stem函数的调用格式和功能如下。stem(y):可以理解成绘制离散点的“plot(y)”函数。stem(x,y):可以理解成绘制离散点的“plot(x,y)”函数。stem(,fill):改变数据点显示的空、实状态。应用举例:例:绘制函数yexsin(x),x=0,10的连续和离散曲线 x=1:.3:10; y=exp(x.*sin(x); plot(x,y)12345678910050010001500200025003000应用举例:调用stem函数绘制离散杆图,使用stem时同样可以设置图形的数据点型和色彩,例如用红色的实线来表示离散数据点,并设置其填充属性为填充 stem(x,y,-r,fill)123456789100500100015002000250030009.3.5 绘制编辑罗盘图 下面将分别介绍3个函数:compass、feather和quiver函数,这3个函数都是用于绘制方向和速度矢量图形的函数。 说明:在调用compass函数绘制罗盘图时,对于表示方向的自变量,要进行角度和弧度的转变,一般格式为:rad=ang*pi/180应用举例:例:绘制12小时的风向和风力的罗盘图。(1)进行图形绘制的数据准备 w=45 90 90 45 360 335 360 270; %风向(角度) k=6 6 8 3 9 6 8 9; %风力(半径) rad=w*pi/180; %将风向转换为弧度值 x,y=pol2cart(rad,k); %将极坐标转换为直角坐标 compass(x,y) 2 4 6 8 103021060240902701203001503301800应用举例:说明:POL2CART(TH,R)将极坐标(角度TH和半径R)存储的数据中相应的元素转换到笛卡儿坐标X,Y。数组TH和R必须大小相同(或者二者皆可标量),TH必须是弧度值。 9.3.6 绘制编辑羽毛图 feather函数以箭头的形式表示一系列矢量,在调用feather函数之前,用户需要首先进行极坐标到直角坐标的转换,然后将矢量扩大10倍,以便图形中的箭头能显示清晰。应用举例:例:创建两个向量a=90:-10:0和r=ones(size(a) a=90:-10:0; r=ones(size(a) m=a*pi/180;%将向量数据转换为直角坐标系 n=r*10; u,v=pol2cart(m,n); feather(u,v) %绘制羽毛图并添加标题 title(向量)9.3.7 绘制编辑轮廓图 轮廓图绘制函数主要用于创建、显示和标注一个或多个矩阵确定的轮廓线。MATLAB中专门用于绘制轮廓线的函数,contout和contout3函数分别用来创建二维和三维轮廓线图,在调用这两个函数时需要一个矩阵输入参数,用以表示对于相对平面的高度。 另外:MATLAB提供了一个peaks函数,可产生一个凹凸有致的曲面,包含了三个局部极大点及三个局部极小点,在绘制轮廓图中常用到此函数。 应用举例: 例:调用contour函数绘制等高轮廓线 x,y,z=peaks; contour(x,y,z) %默认条数 contour(x,y,z,10) %分别指定轮廓线条数为10和20 contour(x,y,z,20)9.4 小结 本章主要介绍二维图形的绘制和编辑,通过学习,读者需要掌握如下的内容。 二维图形的绘制步骤 子图的概念和绘制 图形的叠绘 双纵坐标图形的绘制 交互绘图函数 网格和轴外框的设置 添加图形注释 特殊图形的绘制和应用10.3.2 绘制编辑区域图 区域图是在图形窗口绘制一条或多条曲线,改曲线可以表示矩阵的不同列元素,矩阵每一列元素的值都用独立曲线表示,第二条开始的每条曲线都以前面的曲线作为“基线”,再取数值绘制而成。曲线之间以及基线与x轴之间的区域填充不同颜色。区域图一般用于数据的比较,可以调用area函数绘制。常用area函数的调用格式和功能如下。area(x):最常见调用格式。以向量x的下标为横坐标,x的元素值为纵坐标。area(x,y):如果x、y都是向量时,绘图机理和plot函数类似;如果x为向量,y为矩阵,则以向量x为横坐标,以矩阵y的元素的累积值作为纵坐标绘制图形。area(,basevalue):basevalue代表绘图的基准线值,此值只可以取标量,如果以x坐标轴为绘制基准,则basevalue值为0。10.3.9 绘制编辑箭头图 quiver函数用来在二维平面上的定点绘制矢量,该矢量由x组元和y组元组成,箭头图经常与其他图形配合使用。应用举例:例: x,y,z=peaks(50); contour(x,y,z,10) u,v=gradient(z,.2); hold on quiver(x,y,u,v)
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 成人自考


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!