1、第4章 Matlab 绘图,Matlab语言丰富的图形表现方法,使得数学计算结果可以方便地、多样性地实现了可视化,这是其它语言所不能比拟的,Matlab语言的绘图功能,不仅能绘制几乎所有的标准图形,而且其表现形式也是丰富多样的。matlab语言不仅具有高层绘图能力,而且还具有底层绘图能力句柄绘图方法。在面向对象的图形设计基础上,使得用户可以用来开发各专业的专用图形。,一、二维绘图,(一)plot 最基本的二维图形指令plot命令自动打开一个图形窗口,如果已经存在一个图形窗口,plot命令则清除当前图形,绘制新图形用直线连接相邻两数据点来绘制图形 根据图形坐标大小自动缩扩坐标轴,将数据标尺及单位
2、标注自动加到两个坐标轴上,可自定坐标轴 单窗口单曲线绘图、单窗口多曲线绘图、单窗口多曲线分图绘图、多窗口绘图 可设定曲线颜色和线型,可给图形加坐标网线和图形加注功能,plot调用格式,plot(x) 缺省自变量绘图格式,x为向量, 以x元素值为纵坐标,以相应元素下标为横坐标绘图plot(x, y) 基本格式,以y(x)的函数关系作出直角坐标图,如果y为nm的矩阵,则以x 为自变量,作出m条曲线 plot(x1, y1, x2, y2) 多条曲线绘图格式,plot(x , y, s) 开关格式,开关量字符串s设定曲线颜色和绘图方式,使用颜色字符串的前13个字母,如yellowyel表示等 plo
3、t(x1, y1, s1, x2, y2, s2,),绘图控制命令,(1)曲线控制命令,颜色控制符,线型控制符,数据点控制符,颜色、线型、标记三种属性的符号必须放在同一个字符串内 属性的先后顺序没有关系,可以只指定一两个属性,也可以全部缺省,但同种属性不能同时指定两个 颜色控制符缺省为蓝色,线型控制符缺省为实线 属性间不用间隔,例 用红色、点连线、叉号画出正弦曲线。x = 0 : 0.2 : 8;y = sin(x);plot(x, y, r:x),(2)图形的标注命令,图形标注函数,例:t = 0: 0.1: 10 y1 = sin(t); y2 =cos(t); plot(t,y1,r,t
4、,y2,b-); x = 1.7*pi; 1.6*pi; y = -0.3; 0.8; s = sin(t); cos(t); text(x, y, s); title(正弦和余弦曲线); legend(正弦, 余弦); xlabel(时间t); ylabel(正弦、余弦); grid on axis square,单窗口单曲线绘图,例:x=0, 0.48, 0.84,1, 0.91, 0.6, 0.14 x1, x2, x3, x4, x5, x6, x7plot(x),单窗口多曲线绘图(3种方法),例:t=0 : pi/100 : 2*pi; y = sin(t); y1=sin(t+0.
5、25); y2 = sin(t+0.5); plot(t, y, t, y1, t, y2),例 t = 0:pi/100:2*pi; y = sin(t); y1 = sin(t+ 0.25); y2 = sin(t+ 0.5); y3 = cos(t); y4 = cos(t+0.25); y5 = cos(t+0.5); plot(t, y, y1, y2, y3, y4, y5),t = 0 : pi/100: 2*pi; y3 = cos(t); y4 = cos(t+0.25); y5 = cos(t+0.5); plot(t, y3); hold on; plot(t, y4);
6、 plot(t, y5),单窗口多曲线分图绘图,subplot 子图分割命令 调用格式:subplot(m,n,p) 按从左至右,从上至下排列,行,列,subplot(1, 3, 1); plot(t, y) subplot(1, 3, 2); plot(t, y3) subplot(1, 3, 3); plot(t, y2),subplot(3,1,1); plot(t,y) subplot(3,1,2); plot(t,y3) subplot(3,1,3); plot(t,y2),多窗口绘图,figure(n) 创建窗口函数,n为窗口顺序号。 t=0: pi/100: 2*pi; y =
7、sin(t); y1 = sin(t + 0.25); y2 = sin(t + 0.5); plot(t,y) 自动出现第一个窗口 figure(2) plot(t,y1) 在第二窗口绘图 figure(3) plot(t,y2) 在第三窗口绘图,绘制函数图函数,fplot调用格式: fplot(fun,lims) 绘制函数fun在x区间 lims=xmin xmax的函数图 fplot(fun,lims,corline) 以指定线形绘图 x,y=fplot(fun,lims) 只返回绘图点的值,而不绘图,可以用plot(x,y)来绘图,fplot(sin(x),tan(x),cos(x),
8、 2*pi*-1 1 -1 1) fplot(humps, 0 1 -10 120,rp),ezplot调用格式: ezplot(f) 这里f为包含单个符号变量x的符号表达式,在x轴的默认范围-2*pi 2*pi内绘制f(x)的函数图 ezplot(f, xmin, xmax) 给定区间 ezplot(f, xmin,xmax, figure(n) 指定绘图窗口绘图,绘制函数图函数,ezplot(sin(x) ezplot(sin(x),cos(y),-4*pi 4*pi,figure(2),(二) fill 基本二维绘图函数fill的功能: 绘制二维多边形并填充颜色 例:x=1 2 3 4
9、5; y=4 1 5 1 4; fill(x,y,r),(三)特殊二维绘图函数,bar 绘制直方图polar 绘制极坐标图hist 绘制统计直方图stairs 绘制阶梯图stem 绘制火柴杆图rose 绘制统计扇形图comet 绘制彗星曲线,errorbar 绘制误差棒图compass 复数向量图(罗盘图)feather 复数向量投影图(羽毛图)quiver 向量场图area 区域图pie 饼图convhull 凸壳图 scatter 离散点图,例 绘制阶梯曲线 x=0: pi/20 : 2*pi; y = sin(x); stairs(x, y),例:阶梯绘图 h2=1 1;1 -1;h4=
10、h2 h2;h2 -h2; h8=h4 h4;h4 -h4;t=1:8; subplot(8,1,1);stairs(t,h8(1,:);axis(off) subplot(8,1,2);stairs(t,h8(2,:);axis(off) subplot(8,1,3);stairs(t,h8(3,:);axis(off) subplot(8,1,4);stairs(t,h8(4,:);axis(off) subplot(8,1,5);stairs(t,h8(5,:);axis(off) subplot(8,1,6);stairs(t,h8(6,:);axis(off) subplot(8,1
11、,7);stairs(t,h8(7,:);axis(off) subplot(8,1,8);stairs(t,h8(8,:);axis(off),h2=1 1;1 -1;h4=h2 h2;h2 -h2; h8=h4 h4;h4 -h4; t=1:8; for i=1:8 subplot(8,1,i); stairs(t,h8(i,:) axis(off) end,例:绘制火柴杆绘图t=0:0.2:2*pi; y=cos(t); stem(t,y),例:绘制直方图t=0:0.2:2*pi; y=cos(t); bar(y),例:绘制彗星曲线图t= -pi : pi/500 : pi;y=tan(
12、sin(t)-sin(tan(t); comet(t,y),二、三维绘图,三维绘图的主要功能:绘制三维线图绘制等高线图绘制伪彩色图绘制三维网线图绘制三维曲面图、柱面图和球面图绘制三维多面体并填充颜色,(一)三维线图,plot3 基本的三维图形指令 调用格式: plot3(x,y,z) x,y,z是长度相同的向量 plot3(X,Y,Z) X,Y,Z是维数相同的矩阵 plot3(x,y,z,s) 带开关量 plot3(x1,y1,z1,s1, x2,y2,z2,s2, ),二维图形的所有基本特性对三维图形全都适用。定义三维坐标轴 大小axis(xmin xmax ymin ymax zmin z
13、max )grid on(off) 绘制三维网格text(x,y,z,string) 三维图形标注子图和多窗口也可以用到三维图形中,(三)三维多边形,fill3 = fill 三维多边形的绘制和填色与二维多边形完全相同 调用格式:fill3(x,y,z,s) 与二维相同,例: 用随机顶点坐标画出5个粉色的三角形,并用黄色的表示顶点 y1=rand(3,5);y2=rand(3,5);y3=rand(3,5); fill3(y1,y2,y3,m);hold on;plot3(y1,y2,y3,yo),(四)三维网格图,mesh 三维网线绘图函数 调用格式:mesh(z) z为nm的矩阵,x与y坐
14、标为元素的下标mesh(x,y,z) x,y,z分别为三维空间的坐标位置,三维网线图作图要领,生成坐标 X,Y=meshgrid(x,y) 表达式点运算 Z=X.2+Y.2 X,Y是nm的矩阵,维数可任定 X n Y m Z,nm维,meshgrid 网线坐标值计算函数z=f(x,y) 根据x,y坐标找出z坐标 例:绘制z=x2+y2的三维网线图形x=-5:5; y=x; X,Y=meshgrid(x,y)Z=X.2+Y.2mesh(X,Y,Z),坐标矩阵,坐标向量,纵坐标矩阵,绘图函数,(五)三维曲面图,surf 三维曲面绘图函数,与网格图看起来一样 与三维网线图的区别: 网线图:线条有颜色
15、,空挡是黑色的(无颜色) 曲面图:线条是黑色的,空挡有颜色(把 线条之间的空挡填充颜色,沿z轴按每一网 格变化,调用格式: surf(x,y,z) 绘制三维曲面图,x,y,z为图形坐标向量 例: X,Y,Z=peaks(30) peaks为matlab 自动生成的三维测 试图形 surf(X,Y,Z), surfc(X,Y,Z) 带等高线的曲面图X,Y,Z=peaks(30);surfc(X,Y,Z), surfl(X,Y,Z) 被光照射带阴影的曲面图 X,Y,Z=peaks(30);surfl(X,Y,Z),(六) 图形修饰方法,图形颜色的修饰 matlab 有极好的颜色表现功能,其颜色数据
16、又构成了一维新的数据集合,也可称为四维图形 colormap(MAP) 色图设定函数,MAP为m3维色图矩阵 图形颜色可根据需要任意生成,也可用matlab配备的色图函数,matlab 的色图函数:hsv 饱和值色图gray 线性灰度色图hot 暖色色图cool 冷色色图bone 兰色调灰色图copper 铜色色图pink 粉红色图prism 光谱色图jet 饱和值色图IIflag 红、白、蓝交替色图,shading faceted 网格修饰,缺省方式,shading flat 去掉黑色线条,根据小方块的值确定颜色,shading interp 颜色整体改变,根据 小方块四角的值差补过度点的值
17、确定颜色,peaks(30);shading interp;colormap(hot),X,Y,Z=peaks(30);surfl(X,Y,Z); shading interp; colormap(cool); axis off,peaks(30);colormap(hot);colorbar(horiz) figure(2);peaks(30); colormap(cool); colorbar(horiz), 图形效果修饰,透视与消隐 用于网线图 裁剪修饰 用于网线图、曲面图 视角修饰 观察不同角度的三维视图 其它修饰:a. 水线修饰b. 等高线修饰,透视与消隐 subplot(1,2,1
18、) p=peaks(30);mesh(p); hidden on subplot(1,2,2) p=peaks(30);mesh(p); hidden off,裁减修饰 p=peaks; p(30:40,20:30)=nan*p(30:40,20:30);surf(p),p=peaks; p(30:40,20:30)=nan*p(30:40,20:30); mesh(p),(五)、伪彩色图,pcolor 常用于以二维平面图表现三维图形的效果,用颜色表示三维图形的高度。,z=peaks(30) pcolor(z) colorbar(horiz),小结:,基本绘图函数plot, plot3, mesh, surf 要求掌握以上绘图函数的用法、简单图形标注、简单颜色设定,