dramatic
第7章MATLAB数据可视化教学提示完备的图形功能使计算结果可视化是MATLAB的重要特点之一。用图表和图形来表示数据的技术称为数据可视化。本章重点讲述二维、三维图形的绘制和修饰在此基础上介绍一元函数和二元函数的可视化还介绍图像的类型和显示及图像的读写。教学要求本章要求学生重点掌握绘制和修饰二维和三维图形的命令了解图像的基本类型和图像的显示与读写命令掌握一元函数和二元函数的绘图方法。7.1 二维图形MATLAB不但擅长与矩阵相关的数值运算而且还提供了许多在二维和三维空间内显示可视信息的函数利用这些函数可以绘制出所需的图形MATLAB提供了丰富的修饰方法合理地使用这些方法使我们
爱词霸
绘制的图形更为美观、精确。MATLAB将构成图形的各个基本要素称为图形对象。这些对象包括计算机屏幕、图形窗口、用户菜单、坐标轴、用户控件、曲线、曲面、文字、图像、光源、区域块和方框。系统将每一个对象按树形结构组织起来如图7.1所示。计算机屏幕图形窗口用户菜单坐标轴用户控件曲线曲面文字图像光源区域块方框图7.1 MATLAB图形对象的树形结构在MATLAB中每个具体的图形都是由若干个不同的图形对象组成计算机屏幕是产生其他对象的基础称为根对象它包括一个或多个图形窗口对象。每个具体的图形必须有计算机屏幕和图形窗口对象。一个图形窗口对象有3种不同类型的子对象其中的坐标轴又有7种不同类型的子对象。MATLAB在创建每一个图形对象时都为该对象分配了唯一值称为图形对象句柄。句柄是图形对象的唯一标识符不同图形对象的句柄是不可能重复和混淆的。改变句柄就可以改变图形对象的属性从而对具体图形进行编辑以满足实际需要。MATLAB基础及其应用教程·186··186·本节
photos arch results介绍MATLAB基本绘图命令包括二维曲线的绘制、曲线的修饰和标注、坐标轴的限制和标注等。7.1.1 MATLAB的图形窗口1创建图形窗口在MATLAB中绘制的图形被直接输出到一个新的窗口中这个窗口和命令行窗口是相互独立的被称为图形窗口。如果当前不存在图形窗口MATLAB 的绘图函数会自动建立一个新的图形窗口如果已存在一个图形窗口MATLAB的绘
图函数就会在这个窗口中进行绘图操作如果已存在多个图形窗口MATLAB的绘图
函数就会在当前窗口中进行绘图操作当前窗口通常是指最后一个使用的图形窗口。在MATLAB中使用函数figure来建立图形窗口该函数最简单的调用方式为figure 这样就建立了一个如图7.2所示的图形窗口。图7.2 MATLAB的图形窗口使用“图形编辑工具条”可以对图形进行编辑和修改也可以用鼠标选中图形中的对象右击可弹出
快捷菜单通过选择菜单项实现对图形的操作。函数figure其他调用方式有以指定的属性值创建一个新的图形窗口其中PropertyName为属性名PropertyValue为属性值。未指定的属性取默认值。2 figureh 如果h已经是图形句柄则将它代表的图形窗口置为当前窗口如果h不是图形句柄但为一正整数则创建一个图形句柄为h的新的图形窗口。3 调用函数figure
时同时返回图形对象的句柄。第7章MATLAB数据可视化·187··187·2. 关闭与清除图形窗口执行clo
命令可关闭图形窗口其调用方式有1 clo关闭当前图形窗口等效于clogcf。2 cloh关闭图形句柄h指定的图形窗口。3 clo name关闭图形窗口名name指定的图形窗口。4 clo all关闭除隐含图形句柄的所有图形窗口。5 clo all hidden关闭包括隐含图形句柄在内的所有图形窗口。6 调用clo
淘宝培训学校函数正常关闭图形窗口时返回1否则返回0。清除当前图形窗口中使用如下命令1 clf清除当前图形窗口所有可见的图形对象2 clf ret清除当前图形窗口所有可见的
图形对象并将窗口的属性设置为默认值Units、PaperPosition和PaperUnits属性除外。
7.1.2 基本二维图形绘制在MATLAB中主要的二维绘图函数如下1 plotx轴和y轴
均为线性刻度。2 loglogx轴和y轴均为对数刻度。3 milogxx轴为对数刻度y轴为线性刻度。 4 milogyx轴为线性刻度y轴为对数刻度。5 plotyy: 绘制双纵坐标图形。其中plot是最基本的二维绘图函数其调用格式有①plotY若Y为实向量则以该向量元素的下标为横坐标以Y的各元素值为纵坐标绘制二维曲线若Y为复数向量则等效于plotrealYimagY若Y为实矩阵则按列绘制每列元素值相对其下标的二维曲线
曲线的条数等于Y的列数若Y为复数矩阵则按列分别以元素实部和虚部为横、纵坐标绘制多条二维曲线。
②plotXY若X、Y为长度相等的向量则绘制以X和Y为横、纵坐标的二维曲线若X为向量Y是有一维与Y同维的矩阵则以X为横坐标绘制出多条不同色彩的曲线曲线的条数与Y的另一维相同若X、Y为同维矩阵则绘制以X和Y对应的列元素为横、纵坐标的多条二维曲线曲线的条数与矩阵的列数相同。③
plotX1Y1X2Y2…XnYn其中的每一对参数Xi和的取值和所绘图形与②中相同。④以LineSpec指定的属性绘制所有Xn、Yn对应的曲线。⑤对于由plot绘制的所有曲线按照设置的属性值进
行绘制PropertyName为属性名PropertyValue为对应的属性值。⑥调用函数plot时同时返回每条曲线的图形句柄h列向量。【例7.1】用函数plot画出sinx2在x ∈0 5之间的图形。x0:0.05:5 x坐标从0到5 ysinx.2 对应的y坐标plotxy 绘制图形MATLAB基础及其应用教程·188··188·输出图形如图7.3所示。图7.3 二维曲线【例7.2】用plot函数绘制多条曲线。x0:0.05:5 x坐标从0到5 y10.2x-0.8 y1坐标y2sinx.2 y2坐标figure 建立图形窗口plotxy1xy2 绘制图形输出图形如图7.4
所示。图7.4 绘制多条曲线【例7.3】输入参数为矩阵时用函数plot绘图。
x0:pi/180:2pi 产生向量x y1sinx 产生向量y1 y2sin2x 产生向量y2 y3sin3x 产生向量y3 Xx x x 矩阵X Yy1 y2 y3 矩阵Y plotX Yxcosx 画4条曲
线:xsinxxsin2xxsin3x以及xcosx 输出图形如图7.5所示。函数loglog、函数milogx 以及函数milogy的调用方式与函数plot相同。函数plotyy可以绘制两条具有不同纵坐标的曲线调用格式为plotyyx1y1x2y2 第7章MATLAB数据可视化·189··189·图7.5 例7.3图x1、y1对应一条曲线x2、y2对应另一条曲线两条曲线的横坐标相同纵坐标有两个图中左边纵坐标用于x1、y1数据对右边纵坐标用于x2、y2数据对。【例7.4】用不同标度在同一坐标内绘制曲线0.31ecos2xyx??及曲线1.5210exy??。x0:pi/180:2pi s2xy210exp-1.5x plotyyxy1xy2 输出图形如图7.6所示。图7.6 具有不同纵坐标的图形7.1.3 其他类型的二维图在MATLAB中还有其他绘图函数可以绘制不同类型的二维图形以满足不同的要求表7-1列出了这些绘图函数。MATLAB基础及其应用教程·190··190·表7-1 其他绘图函数函数二维图的形状备注barxy
条形图x是横坐标y是纵坐标fplotya b 精确绘图y代表某个函数a b表示需要精确
代词练习题
绘图的范围polarθr 极坐标图θ是角度r代表以θ为变量的函数stairsxy 阶梯图x是横坐标y是纵坐标stemxy 针状图x是横坐标y是纵坐标fillxy‟b‟ 实心图x是横坐
什么叫会计
标y是纵坐标…b‟代表颜色scatterxysc 散点图s是圆圈标记点的面积c是标记点颜色piex 饼图x为向量【例7.5】画条形图示例。x -2.9:0.2:2.9 barxexp-x.x 输出图形如图7.7所示。图7.7 条形图【例7.6】画极坐标图示例。t0:.01:2pi 极坐标的角度. figure polartabscos2t 输出图形如图7.8所示。图7.8 极坐标图第7章
MATLAB数据可视化·191··191·【例7.7】画针状图示例。x 0:0.1:4 y x.p-x stemxy 输出图形如图7.9所示。图7.9 针状图【例7.8】画阶梯图示例。x0:0.25:10 figure stairsxsin2xsinx 输出图形如图7.10所示。【例7.9】画饼图示例。x4378884321 piex 输出图形如图7.11所示。图7.10 阶梯图图7.11 饼图7.1.4 色彩和线型在MATLAB中为区别画在同一窗口中的多条曲线可以改变曲线的颜色和线型等图MATLAB基础及其应用教程·192··192·形属性plot函数可以接受字符串输入变量这
些字符串输入变量用来指定不同的颜色、线型和标记符号各数据点上的显示符号。表7-2列出了常用的颜色、线型和标记符号。表7-2 plot绘图函数的常用参数颜色参数颜色线型参数线型标记符号标记y 黄- 实线. 圆点b 蓝: 点线o 圆圈g 绿-. 点划线加号m 洋红-- 虚线星号w 白x 叉号c 青square 或s 方块k 黑diamond 或 d 菱形r 红朝上三角符号v 朝下三角符号lt 朝左三角符号gt 朝右三角符号p 五角星h 六角星【例7.10】绘制两条不同颜色不同线型的曲线。x0:0.2:8 y10.2sin-2x 曲线y1 y2sinx.0.5 曲线y2 figure plotxy1g-xy2r--d
曲线y1采用绿色、实线、加号标记曲线y2 采用红色、虚线、菱形标记。输出图形如图7.12所示由于非彩色印刷所以颜色只能通过灰度进行区分。绿色红色图7.12 不同颜色、线型和标记的两条曲线第7章MATLAB数据可视化·193··193·7.1.5 坐标轴及标注MATLAB在绘图时会根据数据的分布范围自动选择坐标轴的刻度范围比如在例7.10中的x在08之间取值从图7.12可看到x轴的刻度自动限定在08。MATLAB同时提供了函数axis指定坐标轴的刻度范围其调用格式为axisxminxmaxyminymax 函数中xmi
nxmaxyminymax分别表示x轴的起点、终点y轴的起点、终点。例如在例7.10中最后加上一句axis-0.55-0.51.3画出的曲线如图7.13 所示。图7.13 对坐标轴刻度的调整MATLAB还提供了一些图形的标注命令见表7-3通过这些标注命令可以对每个坐标轴单独进行标注给图形放置文本注解还可以加上网格线以确定曲线上某一点的坐标值还可以用hold on/off 实现保持原有图形或刷新原有图形。表7-3 常用图形标注命令命令功能axis on/off 显示/取消坐标轴xlabeloption x轴加标注option表示任意选项ylabeloption y轴加标注titleoption
图形加标题legendoption 图形加标注grid on/off 显示/取消网格线box on/off 给坐标加/不加边框线【例7.11】图形标注示例。x0:0.05:5 figure y1exp0.4.x-1.5y2sinx4 plotxy1xy2r-. 曲线y2用红色点画线表示MATLAB基础及其应用教程·194··194·line0500 在00和50之间画直线代替横坐标xlabelInputylabelOutput x轴标注‟Input‟ y轴标注‟Output‟ titleTwo Function 图形标题…Two Function‟
smirk什么意思legendy1exp0.4.x-1.5y2sinx4 注解图形grid on 显示网格线输出图形如图7.14所示。图7.14 图形标注7.1.6 子图在一个图形窗口用函数subplot可以同时画出多个子图形其调用格式主要有以下几种。1 subplotmnp将当前图形窗口分成m×n个子窗口并在第p个子窗口建立当前坐标平面。子窗口按从左到右从上到下的顺序编号如图7.15所示。如果p为向量则以向量表示的位置建立当前子窗口的坐标平面。subplot231 subplot232 subplot234 subplot235 subplot233 subplot236 图7.15 子图位置示意图第7章MATLAB数据可视化·195··195·2 subplotmnpreplace按1建立当前子窗口的坐标
平面时若指定位置已经建立了坐标平面则以新建的坐标平面代替。3 subploth指定当前子图坐标平面的句柄hh为按mnp排列的整数如在图7.15所示的子图中h232表示第2个子图坐标平面的句柄。4 subplotPositionleft bottom width height在指定的位置
建立当前子图坐标平面它把当前图形窗口看成是1.0×1.0的平面所以left、bottom、width、height分别在0.01.0的范围内取值分别表示所创建当前子图坐标平面距离图形窗口左边、底边的长度以及所建子图坐标平面的宽度和高度。5 创建当前子图坐标平面时同时返回其句柄。值得注意的是函数subplot只是创建子图坐标平面在该坐标平面内绘制子图仍然需要使用plot函数或其他绘图函数。【例7.12】子图绘制示例。xlinspace02pi100 x轴从02π取100点subplot221plotxsinx 视窗的第一行第一列画sinx xlabelxylabely titlesinx x轴加注解xy轴加注解y加标题sinx
subplot222plotxcosx xlabelxylabely titlecosx subplot223plotxexpx xlabelxylabely titleexpx subplot224plotxexp-x xlabelxylabely titleexp-x 输出图形如图7.16所示。图7.16 绘制子图7.2 三维图形MATLAB提供了多种函数来显示三维图形这些函数可以在三维空间中画曲线也可以画曲面MATLAB还提供了用颜色来代表第四维
即伪色彩。我们还可以通过改变视角MATLAB基础及其应用教程·196··196·看三维图形的不同侧面。本节介绍三维图形的作图方法及其修饰。7.2.1 三维曲线图用函数plot3可以绘制三维图形其调用格式
主要有以下几种X1、Y1、Z1为向量或矩阵表示图形的三维坐标。该函数可以在同一图形窗口一次画出多条三维曲线以 XnYnZn指定各条曲线的三维坐标。以LineSpec指定的属性绘制三维图形。对以函数plot3绘制的图形对象设置属性。4 调用函数plot3绘制图形同时返回图形句柄。【例7.13】绘制三维曲线示例。t0:0.05:20 figure subplot221 plot3sintcostt 画三维曲线grid text0000 在x0y0z0处标记”0” titleThree Dimension xlabelsintylabelcostzlabelt subplot222plotsintt grid titlex-z plane 三维曲线在x-z平面的投影xlabelsintylabelt subplot223plotcostt grid titley-z plane 三维曲线在y-z平面的投影xlabelcostylabelt subplot224plotsintcost titlex-y plane 三维曲线在x-y平面的投影xlabelsintylabelcost grid 输出图形如图7.17所示。从例7.13我们看到二维图形的基本特性在三维图形中都存在函数subplot、函数title、函数xlabel、函数grid等都可以扩展到三维图形。例题中的命令textxyz‟string‟意思是在三维坐标xyz所指定的位置上放一个字符串。7.2.2 三维曲面图1可用函数surf、surfc来绘制三维曲面图调用格式如下 1 surfZ以矩阵Z指定的参数创建一渐变的三维曲面坐标x 1:ny 1:m其中mn sizeZ进一步在x-y平面上形成所谓“格点”矩阵XYmeshgridxyZ为函数zfxy在自变量采样“格点”上的函数值ZfXY。Z既指定了曲面的颜色也指定了曲面的高度所以渐变的颜色可以和高度适配。所谓“格点”如图7.18所示。第7章MATLAB数据可视化·197··197·图7.17 三维曲线及其在3个平面上的投影图7.18 三维曲面与格点2 surfXYZ以Z确定的曲面高度和颜色按照X、Y形成的“格点”矩阵创建一渐变的三维曲面。X、Y可以为向量或矩阵若X、Y为向量则必须满足m sizeXn sizeYmn sizeZ。
3 surfXYZC以Z确定的曲面高度C确定的曲面颜色按照X、Y形成的“格点”矩阵创建一渐变的三维曲面。
PropertyNamePropertyValue设置曲面的属性。
采用surfc函数的格式同surf同时在曲面下绘制曲面的等高线。
北京大学mba6 采用surf创建曲面时同时返回图形句柄h。
7 采用surfc创建曲面时同时返回图形句柄h。【例7.14】绘制球体的三维图形。figure XYZsphere30 计算球体的三维坐标surf XYZ 绘制球体的三维图形xlabelxylabelyzlabelz titleSURF OF SPHERE MATLAB
基础及其应用教程·198··198·输出图形如图7.19所示。注意在图形窗口需将图形的属
性Renderer设置成Painters才能显示出坐标名称和图形标题。图7.19 球体的三维曲面图7.19中我们看到球面被网格线分割成小块每一小块可看作是一块补片嵌在线条之间。这些线条和渐变颜色可以由命令shading来指定其格式为1 shading faceted 在绘制曲面时采用分层网格线为默认值。2 shading flat表示平滑式颜色分布方式去掉黑色线条补片保持单一颜色。3 shading interp表示插补式颜色分布方式同样去掉线条但补片以插值加色。这种方式需要比分块和平滑更多的计算量。对于例7.14所绘制的曲面分别采用shading flat和shading interp显示的效果如图7.20所示。a shading flat 的绘制效果b shadin
g interp 的绘制效果图7.20 不同方式下球体的三维曲面【例7.15】绘制具有等值线的曲面图。xy meshgrid-3:1/4:3 以0.25的间隔形成格点矩阵z peaksxy surfcxyz 第7章MATLAB数据可视化·199··199·输出图形如图7.21所示。图7.21 具有等值线的曲面图【例7.16】以surfl函数绘制具有亮度的曲面图。xy meshgrid-3:1/8:3 以0.125的间隔形成格点矩阵z peaksxy surflxyz shading interp colormapgray axis-3 3 -3 3 -8 8 输出图形如图7.22所示。图7.22 具有亮度的曲面图2标准三维曲面1 用sphere函数绘制三维球面调用格式为xyzspheren MATLAB基础及其应用教程·200··200·产生n1×n1矩阵xyz采用这3个矩
阵绘制圆心位于原点半径为1的球体。n决定球面的光滑程度默认值为20。 2 用cylinder函数绘制三维柱面饔酶袷轿?xyzcylinderRn R是一个向量存放柱面各等间隔高度上的半径n表示圆柱圆周上有n个等间隔点默认值为20。 3 多峰函数peaks常用于三维函数的演示。函数形式为
托福和雅思哪个难>triste22222221351131e10ee3353xyxyxyxfxyxxyxy≤≤ 调用格式为zpeaksn 生成一个n×n的矩阵zn的默认值为48或zpeaksxy根据网格坐标矩阵xy计算函数值矩阵z。【例7.17】绘制三维标准曲面。t0:pi/20:2pi xyzsphere subplot131 surfxyzxlabelxylabelyzlabelz title球面xyzcylinder2sin2t30 subplot132 surfxyzxlabelxylabelyzlabelz title柱面xyzpeaks20 subplot133 surfxyzxlabelxylabelyzlabelz title多峰输出图形如图7.23所示。因柱面函数的R选项2sin2t所以绘制的柱面是一个正弦型的。图7.23 三维标准曲面7.2.3 视角控制观察前面绘制的三维图形是以30°视角向下看z0平面以-37.5°视角看x0平面。第7章
MATLAB数据可视化·201··201·与z0平面所成的方向角称为仰角与x0平面的夹角叫方位角如.