1、第五章 MATLAB 绘图教学目标1、熟练掌握 MATLAB 二维图形的绘制2、了解隐函数绘图3、熟练掌握三维图形绘制4、熟练掌握各种特殊图形的绘制5.1 二维曲线图5.1.1 图形窗口简介MATLAB 一向注重数据的图形表示,所有的图形窗口的开发使用都是为了让用户通过更为直观的方法直接体会数据间的含义1、figure 及相关指令在 MATLAB 术语中,有一个显示图形窗口叫做 “figure”,不同的 figure 命令可以用其句柄(handle)加以区分。不带参数的 figure 命令用来产生一个新的 figure 窗口,返回其句柄。也可以带一个整型参数:figure(H),表示打开一个新
2、的 figure 窗口并且其句柄为 H。如果举兵为 H 的 figure 窗口已经存在,则此命令将它变为可见,即置于其他所有子窗口的上面,并且把它变成“当前”的 figure,在这里, “当前”的含义是:以后的图形操作如果不指明figure 句柄,则都是针对这个 figure 进行的。2、subplot 及其相关指令MATLAB 可以将窗口区域分成若干个小的窗口,每一个窗口相当于一个 figure,在小窗口中可以像在整个窗口中一样进行图形的绘制工作。完成这个工作的命令是 subplot。命令 subplot(m,n,i)把图形窗口分成 mn 个小图形区域,并指定第 i 个为图形的绘制区域。和矩
3、阵不同,图形区域的编排采用行优先的原则。5.1.2 plot 指令绘图1、绘制一条二维曲线MATLAB 中最常用的就是 plot 指令,其具体调用格式为plot(x) %绘制以 x 为纵坐标的二维曲线plot(x,y) %绘制以 x 为横坐标 y 为纵坐标的二维曲线说明:x 和 y 可以是向量或矩阵。例:用 plot(x)命令画直线。x1=1 2 3 x1 =1 2 3 plot(x1) x2=0 1 0 x2 =0 1 0 plot(x2)例 在 0x2 区间内,绘制曲线y=2e-0.5xcos(4x)程序如下:x=0:pi/100:2*pi;y=2*exp(-0.5*x).*cos(4*p
4、i*x);plot(x,y)例 绘制曲线程序如下:t=0:0.1:2*pi;x=t.*sin(3*t);y=t.*sin(t).*sin(t);plot(x,y);2、绘制多条二维曲线例 矩阵图形的绘制,如下图所示。x1=1 2 3;4 5 6;plot(x1);x2=peaks; %产生一个 49*49的矩阵plot(x2); 3、plot(x,y)绘制混合式曲线当 plot(x,y)命令中的参数 x 和 y 是向量或矩阵时,分别有以下几种情况: 如果 x 是向量,而 y 是矩阵,则 x 的长度与矩阵 y 的行数或列数必须相等,如果 x的长度与 y 的行数相等,则向量 x 与矩阵 y 的每列
5、向量对应画一条曲线;如果 x 的长度与y 的列数相等,向量 x 与 y 的每行向量画一条曲线,如果 y 是方阵,则 x 和 y 的行数和列数都相等,将向量 x 与矩阵 y 的每列向量画一条曲线; 如果 x 是矩阵,而 y 是向量,则 y 的长度必须等于 x 的行数或列数,绘制的方法与前一种相似; 如果 x 和 y 都是矩阵,则大小必须相同,矩阵 x 的每列和 y 的每列画一条曲线。例 混合式图形的绘制x1=1 2 3;y1=1 2 3;4 5 6 y1 =1 2 34 5 6 plot(x1,y1) %每行一条曲线 y2=1 2 ;3 4; 5 6 y2 =1 23 45 6 plot(x1,
6、y2) %每列一条曲线plot(y1,x1)plot(y2,x1) x2=1 1 1;2 2 2 4、曲线的线型、颜色和数据点形plot 命令还可以设置曲线的线段类型、颜色和数据点形等,如下表所示颜色 数据点间连线 数据点形类型 符号 类型 符号 类型 符号黄色品红色(紫色)青色红色绿色蓝色白色黑色y(Yellow)m(Magenta)c(Cyan)r(Red)g(Green)b(Blue)w(White)k(Black)实线(默认)点线点划线虚线-:-.-实点标记圆圈标记叉号形十字形星号标记方块标记钻石形标记向下的三角形标记向上的三角形标记向左的三角形标记向右的三角形标记五角星标记六连形标记
7、.ox+*sdvph语法:plot(x,y,s)说明:x 为横坐标矩阵,y 为纵坐标矩阵,s 为类型说明字符串参数;s 字符串可以是线段类型、颜色和数据点形三种类型的符号之一,也可以是三种类型符号的组合。5.1.2 特殊二维图形在各种专业上常常碰到一些场合,需要把数据以分类的形式显示出来,例如:按月份组织年度销售收入、在信号处理需要绘制时间信号的波形、气象工作者需要显示若干地区的平均气温数据等。为了满足这些特殊要求而需要采用特殊的平面图形。实际工作中人们习惯用直方图、条形图、扁形图等表达这些数据,MATLAB 为此设计了一些专门用于绘制这些特殊平面图形的函数,使得这些工作变得非常简单。1、条形
8、图条形图常用于统计数据的作图,绘制条形图的函数有以下几种。bar 竖直条形图barth 水平条形图bar3 三维竖直条形图bar3th 三维水平条形图这些函数的调用方法类似,下面以 bar 为例进行介绍bar(X, Y)X 为横坐标向量,Y 可以使向量或者矩阵。Y 是向量时,每个元素对应于一个竖条,Y 是m 行 n 列的矩阵时,将画出 m 组竖条,每组包含 n 个条bar(Y)横坐标使用默认值 1:1:mbar(X, Y,width )用 width 指定竖条的宽度,默认宽度为 0.8。如果宽度大于 1,那么条和条之间将重合。例 假想某城市一年 12 月份的平均气温数据,划出其条形图 x=1:
9、12; y=-12 -6 4 11 23 26 36 30 21 17 10 3; bar(x,y)工程中大量用到的数据都是和一个误差估计联系在一起的,MATLAB 中可以以一种直观的方式显示这种带有误差的数据。函数 errorbar 用来绘制误差条形图,其调用方式如下。errorbar(x,y,e) 绘制带有误差 e 的数据 y,这里误差是中心对称的,即 y 的误差是以y-e,y+e的形式给出的。errorbar(x,y,i,u) 误差不是中心对称的,而是以y-i,y+u的形式给出的。x,y,i,u 必须是相同长度的向量,如果是矩阵,则这个矩阵的每一列将在图中产生一条单独的图线。errorb
10、ar(.,LINESPEC) 可以用 LINESPEC 参数指定 line 对象的线型和颜色等。例 误差条形图示例 x=-3:0.2:3; y=erf(x); e=rand(size(x)/10; errorbar(x,y,e) grid on说明:这里我们采用了 gauss 误差函数 erf,rand 函数产生随机误差时用的。2、直方图直方图和条形图的形状相似,但作用不同,它主要用于显示数据的分布规律。用于建立直方图的函数有 hist 和 rose,其中函数 hist 在直角坐标系中建立直方图,函数rose 在极坐标中建立直方图。hist 函数 y 用于对数据的分布情况进行分析,并绘制直方图
11、,其调用方式如下:N=hist(y) 使用 10 个等距离分布的区间来对向量 y 的分布进行统计,并返回每个区间上含有 y 中元素的个数。N=hist(y,m) 使用 m 个区间进行估计rose 的用法和 hist 的用法相似,只是把数据作为弧度值处理,在极坐标系中建立直方图。例 直方图绘制 Y=rand(15000,2); hist(Y) Y=rand(15000,1); hist(Y,30)输出结果如下图所示 wdir=45 90 90 45 360 335 360 270 335 270 335 335; wdir=wdir*pi/180; rose(wdir)输出结果如下图所示stem
12、 函数是对统计数据的另外一种显示方式,和直方图和条形图相比,它的显示特点是在每个垂直条对应的位置上画一个末端带有圆圈数据标记的线段。数据的这种显示方式是信号处理中常常采用的表示方式,其调用方式如下。stem(,filled) 产生带有实心数据标记的茎状图。stem(,LINESPEC) 使用 LINESPEC 指定的线型、颜色来绘制茎状图例 二维茎状图绘制实例 x=1:12; y=342 200 87 912 1342 132 790 823 760 320 290 340; stem(x,y);5.1.3 设置坐标轴和文字控制1、坐标轴控制用坐标控制命令 axis 来控制坐标轴的特性,下表列
13、出了其常用控制命令命令 含义 命令 含义axis auto 使用默认设置 axis equal 纵、横轴采用等长刻度axis manual 使当前坐标范围不变 axis fill 在 manual 方式下起作用,使坐标充满整个绘图区axis off 取消轴背景 axis image 纵、横轴采用等长刻度,且坐标框紧贴数据范围axis on 使用轴背景 axis normal 默认矩形坐标系axis ij 矩阵式坐标,原点在左上方 axis square 产生正方形坐标系axis xy 普通直角坐标,原点在左下方 axis tight 把数据范围直接设为坐标范围axis(xmin,xmax,ymin,ymax)设定坐标范围,必须满足xmin x,y,z=peaks(30); surf(x,y,z); xlabel(x 轴); ylabel(y 轴); zlabel(z 轴); view(90,0)变换视角前 变换视角后变换视角前视角为默认值 el=30。 ,az=-37.5 。 ,而使用 view 后把方向角在 x-y 平面内从 y 轴负方向逆时针旋转 90。 转到 x 轴的正方向,而仰角 0。 即视线从 x 轴的正方向水平看过去的结果。