1、第三节 绘图功能,作为一个功能强大的工具软件,Matlab具有很强的图形处理功能,提供了大量的二维、三维图形函数。由于系统采用面向对象的技术和丰富的矩阵运算,所以在图形处理方面即常方便又高效。,实验目录,一、二维图形,三、图形处理,二、三维图形,一、 二维图形,Note: 作函数关系y(x)的直角坐标图,cs表示颜色和线形。若省略,系统默认是实线;plot命令自动打开一个图形窗口(Figure);用直线连接相邻两数据点来绘制图形根据图形坐标大小自动缩扩坐标轴,将数据标尺及单位标注自动加到两个坐标轴上,可自定坐标轴,可把x, y 轴用对数坐标表示.,1、单窗口曲线绘图,plot(x,y,cs),
2、一、 二维图形(plot),(一)直角坐标系下图形(离散数据作图),【例】 在区间0X2内,绘制正弦曲线Y=SIN(X);,x=0:pi/100:2*pi; y=sin(x); plot(x,y),(5) 如果已经存在一个图形窗口,plot命令则清除当前图形,绘制新图形;(6) 可单窗口单曲线绘图;可单窗口多曲线绘图;(7) 可任意设定曲线颜色和线型;(8) 可给图形加坐标网线和图形加注功能.,note: 函数plot(x,y1,x,y2,x,y3,) ,其功能是以公共向量x为X轴,分别以y1,y2,y3,为Y轴,在同一幅图内绘制出多条曲线。,【例】同时绘制正、余弦两条 曲线Y1=SIN(X)
3、和Y2=COS(X);,x=0:pi/100:2*pi; y1=sin(x); y2=cos(x); plot(x,y1,x,y2),一、 二维图形(plot),【例】 用不同线型和颜色重新绘制Y1=SIN(X)和Y2=COS(X);,x=0:pi/100:2*pi;y1=sin(x);y2=cos(x);plot(x,y1,go,x,y2,b-.),note: 其中参数go和b-.表示图形的颜色和线型。g表示绿色,o表示图形线型为圆圈;b表示蓝色,-.表示图形线型为点划线。,一、 二维图形(plot),字母 颜色 标点 线型y 黄色 点线m 粉红 圈线c 亮蓝 线r 大红 字线 g 绿色 实
4、线b 蓝色 星形线w 白色 : 虚线k 黑色 点划线,常用的线型与颜色,note:该命令将当前图形窗口分成mn个绘图区,即每行n个,共m行,区号按行优先编号,且选定第p个区为当前活动区。,2、单窗口多曲线分图绘图直角坐标系下,一、 二维图形(subplot),subplot(m,n,p),(1),function hhfsin subplot(2,1,1) ezplot(sin(x),0,2*pi) xlabel(x轴) ylabel(y轴) title(正弦函数) axis(0 2*pi,-1 1) grid on,x=linspace(0,2*pi,60); % 产生一个0,2pi长度为6
5、0的向量y=sin(x);z=cos(x);t=sin(x)./(cos(x)+eps); %eps为系统内部常数,避免分母为零ct=cos(x)./(sin(x)+eps);subplot(2,2,1) %分成22区域且指定1号为活动区plot(x,y)title(sin(x) axis (0 2*pi,-1 1); %只显示0,2pi, -1,1的图形,一、 二维图形,【例】 在一个图形窗口中同时绘制正弦、余弦、正切、余切曲线;,一、 二维图形(subplot),subplot(2,2,2); %指定2号为活动区 plot(x,z); title(cos(x); axis (0 2*pi
6、-1 1); subplot(2,2,3); %指定3号为活动区 plot(x,t); title(tangent(x); axis (0 2*pi -40 40); subplot(2,2,4); %指定4号为活动区 plot(x,ct); title(cotangent(x); axis (0 2*pi -40 40);,一、 二维图形,一、 二维图形(subplot),3、符号函数画图(显函数、隐函数和参数方程),(1) 字符串显函数、隐函数、参数方程图形,ezplot(f(x),a,b),Note:表示在axb绘制显函数f=f(x)的函数图.,【例】 在0, 上画y=cos x 的图形
7、.,ezplot(sin(x),0,pi),ezplot(f(x,y),xmin,xmax,ymin,ymax),note:表示在区间xminxxmax和 yminyymax绘制隐函数f(x,y)=0的函数图.,【例】 在-2,0.5,0,2上画隐函数 的图.,ezplot(exp(x)+sin(x*y),-2,0.5,0,2),Note:表示在区间tminttmax绘制参数方程 x=x(t), y=y(t)的函数图.,ezplot(x(t),y(t),tmin,tmax),,,【例】 在0, 2 上画 的星形图.,ezplot(cos(t)3,sin(t)3,0,2*pi),一、 二维图形,
8、(2) 字符串显函数图形,fplot(fun,lims,tol),Note: (1) fun为函数名,以字符串形式出现。lims为变量取值范围,tol为相对允许误差,其系统默认值为2e-3。 (2) fun必须是M文件的函数名或是独立变量为x的字符串. (3) fplot函数不能画参数方程和隐函数图形,但在一个图上可以画多个图形.,【例】 在-2,2范围内绘制函数tanh的图形.,fplot(tanh(x),sin(x),cos(x),2*pi*-1 1 -1 1),fplot(tanh,-2,2),【例】 在-1,2上画 的图形;,.,1.先建M文件myfun1.m:function Y=m
9、yfun1(x)Y=exp(2*x)+sin(3*x.2),2.再输入命令:fplot(myfun1,-1,2),(二)其它坐标系下图形,theta=0:0.01:2*pi; rho=sin(2*theta).*cos(2*theta); polar(theta,rho); %绘制极坐标图命令 title(polar plot);,1、极坐标图,Note:绘制极坐标图,theta为极坐标角度,rho为极坐标半径;,polar(theta,rho),【例8】 绘制sin(2*)*cos(2*)的极坐标图;,【例】 绘制y=|1000sin(4x)|+1的双对数坐标图;,2、 对数坐标图形,log
10、log(x,y) 双对数坐标,x=0:0.1:2*pi; y=abs(1000*sin(4*x)+1; loglog(x,y) %双对数坐标绘图命令,【例】以X轴为对数重新绘制上述曲线; x=0:0.01:2*pi y=abs(1000*sin(4*x)+1 semilogx(x,y) %单对数X轴绘图【例】以Y轴为对数重新绘制上述曲线; x=0:0.01:2*pi y=abs(1000*sin(4*x)+1 semilogy(x,y) %单对数Y轴绘图,4.2特殊坐标图形,semilogx(x,y)单对数X轴绘图命令 semilogy(x,y)单对数Y轴绘图命令,(三)其它图形函数,除plo
11、t等基本绘图命令外,Matlab系统提供了许多其它特殊绘图函数,这里举一些代表性例子,更详细的信息用户可随时查阅在线帮助,其对应的M-file文件存放在系统matlabtoolboxmatlab目录下。,4.3 其它图形函数,如:x=-2.5:0.25:2.5;y=exp(-x.*x);stairs(x,y); %绘制阶梯图形命令title(stairs plot);,4.3 其它图形函数,1、阶梯图形 - 分布函数图形,stairs(x,y),如:x=-2.5:0.25:2.5;y=exp(-x.*x);bar(x,y); %绘制条形图命令,4.3 其它图形函数,2、条形图形 频率直方图,b
12、ar(x,y),如:绘制一正方形并以黄色填充:x=0 1 2 4 0; %正方形顶点坐标向量y=0 0 1 1 0;fill(x,y,b) %绘制并以蓝色填充正方形图,4.3 其它图形函数,3、填充图形,fill(x,y,c) 绘制并填充二维多边图形,Note:x和y为二维多边形顶点坐标向量。字符 c 规定填充颜色,其取值前已叙述。,Note:Matlab系统可用向量表示颜色,通常称其为颜色向量。基本颜色向量用r g b表示,即RGB颜色组合;以RGB为基本色,通过 r,g,b在01范围内的不同取值可以组合出各种颜色。,4.3 其它图形函数,再如:x=0:0.025:2*pi;y=sin(3*
13、x);fill(x,y,0.5 0.3 0.4) %颜色向量,4、其它特殊二维绘图函数,bar 绘制直方图hist 绘制统计直方图stairs 绘制阶梯图stem 绘制火柴杆图rose 绘制统计扇形图comet 绘制彗星曲线,errorbar 绘制误差棒图compass 复数向量图(罗盘图)feather 复数向量投影图(羽毛图)quiver 向量场图area 区域图pie 饼图convhull 凸壳图 scatter 离散点图,二维绘图函数小结,plot 二维图形基本函数 fplot f(x)函数曲线绘制 fill 填充二维多边图形 polar 极坐标图 bar 条形图 loglog 双对数
14、坐标图 semilogx X轴为对数的坐标图 semilogy Y轴为对数的坐标图 stairs 阶梯形图 axis 设置坐标轴,4.3 其它图形函数,clf 清除图形窗口内容 close 关闭图形窗口 figure 创建图形窗口 grid 放置坐标网格线 gtext 用鼠标放置文本 hold 保持当前图形窗口内容 subplot 创建子图 text 放置文本 title 放置图形标题 xlabel 放置X轴坐标标记 ylabel 放置Y轴坐标标记,二、三维图形,1. plot3函数最基本的三维图形函数为plot3,它是将二维函数plot的有关功能扩展到三维空间,用来绘制三维图形。Plot3
15、( x,y,z,c)Note:函数功能:以向量x,y,z为坐标,绘制三维曲线,其中x,y,z表示三维坐标向量,表示线形或颜色。,4.4 三维图形,【例】 绘制三维螺旋曲线:t=0:pi/50:10*pi;y1=sin(t),y2=cos(t);plot3(y1,y2,t);title(helix);text(0,0,0,origin); %在(0,0,0)点添加文本框xlabel(sin(t),ylabel(cos(t),zlabel(t);grid;,4.4 三维图形,2. mesh函数mesh函数用于绘制三维网格图。在不需要绘制特别精细的三维曲面结构图时,可以通过绘制三维网格图来表示三维曲
16、面。三维曲面的网格图最突出的优点是:它较好地解决了实验数据在三维空间的可视化问题。mesh(x,y,z,c)Note:其中x,y控制X和Y轴坐标,矩阵z是由(x,y)求得Z轴坐标,(x,y,z)组成了三维空间的网格点;c用于控制网格点颜色。,4.4 三维图形,【例10】 下列程序绘制三维网格曲面图x=0:0.15:2*pi;y=0:0.15:2*pi;z=sin(y)*cos(x); %矩阵相乘mesh(x,y,z);,3. surf函数surf用于绘制三维曲面图,各线条之间的补面用颜色填充。surf函数和mesh函数的调用格式一致。surf (x,y,z)Note:其中x,y控制X和Y轴坐标
17、,矩阵z是由x,y求得的曲面上Z轴坐标。,4.4 三维图形,【例11】 下列程序绘制三维曲面 图形x=0:0.15:2*pi; y=0:0.15:2*pi; z=sin(y)*cos(x); %矩阵相乘 surf(x,y,z); xlabel(x-axis),ylabel(y-axis),zlabel(z-label); title(3-D surf);,4. 视点视点位置可由方位角和仰角表示。方位角又称旋转角为视点位置在XY平面上的投影与X轴形成的角度,正值表示逆时针,负值表示顺时针。仰角又称视角为XY平面的上仰或下俯角,正值表示视点在XY平面上方,负值表示视点在XY平面下方。 view(a
18、z,el)note: az为方位角,el为仰角。通过系统提供的多峰函数peaks的绘制例子,可进一步说明视点对图形的影响,以及view(az,el)函数的使用。,4.4 三维图形,【例12】 不同视角图形 p=peaks; %系统提供的多峰函数4949矩阵 subplot(2,2,1); mesh(peaks,p); %以p为函数值做网格图 view(-37.5,30); %指定子图1的视点 title(azimuth=-37.5,elevation=30) subplot(2,2,2); mesh(peaks,p); view(-17,60); %指定子图2的视点 title(azimuth
19、=-17,elevation=60),4.4 三维图形,subplot(2,2,3); mesh(peaks,p); view(-90,0); %指定子图3的视点 title(azimuth=-90,elevation=0) subplot(2,2,4); mesh(peaks,p); view(-7,-10); %指定子图4的视点 title(azimuth=-7,elevation=-10),5. 等高线图contour3(x,y,z,16)【例13】 多峰函数peaks的等 高线图x,y,z=peaks(30); %在-3,3-3,3上取多峰函数值contour3(x,y,z,16);
20、%画多多峰函数16条等高线。 xlabel(x-axis),ylabel(y-axis),zlabel(z-axis);title(contour3 of peaks),4.4 三维图形,三、图形处理,1.图形加注标记,Title(string)在当前图形的顶端上加图例string; Xlabel(string)在当前图形的x轴上加图例string; Ylabel(string)在当前图形的y轴上加图例string; Zlabel(string)在当前图形的z轴上加图例string;grid on(off) -打开、关闭坐标网格线,Legend (添加图例说明),【例】 在区间0,2画sin(
21、x)的图形,并加注图例“自变量X”、“函数Y”、“示意图”, 并加格栅.,x=linspace(0,2*pi,30);y=sin(x);plot(x,y)xlabel(自变量X)ylabel(函数Y)title(示意图)grid on,gtext (string),Note:用鼠标放置标注在现有的图上时,图形上出现一个交叉的十字,该十字随鼠标的移动移动,当按下鼠标左键时,该标注string放在当前十交叉的位置.,(2),【例】 在区间0,2画sin(x),并分别标注“sin(x)”cos(x)”.,x=linspace(0,2*pi,30);y=sin(x);z=cos(x);plot(x,y
22、,x,z)gtext(sin(x);gtext(cos(x),2.设定坐标轴,用户若对坐标系统不满意,可利用axis命令对其重新设定。,axis(xmin xmax ymin ymax) 设定最大和最小值; axis (auto) 将坐标系统返回到自动缺省状态; axis (square) 将当前图形设置为方形; axis (equal) 两个坐标因子设成相等; axis (off) 关闭坐标系统,坐标轴、原点都消失 axis (on) 显示坐标系统.,【例】 在区间0.005,0.01显示sin(1/x)的图形.,x=linspace(0.0001,0.01,1000);y=sin(1./x
23、);plot(x,y)axis(0.005 0.01 -1 1),3. 图形保持,Hold on保持当前图形, 以便继续在当前图上画图 hold off 释放当前图形窗口,【例】 将y=sin(x)、y=cos(x)分别用点和线画出在同一屏幕上.,x=linspace(0,2*pi,30);y=sin(x);z=cos(x)plot(x,z,:)hold onplot(x,y),figure(n)新建第n个窗口,并把它置于其它图形之上,(2),【例】 新建两个窗口分别画出y=sin(x),z=cos(x),其中x属于0,2 ;,x=linspace(0,2*pi,100);y=sin(x);z
24、=cos(x);plot(x,y); %自动出现第一个窗口title(sin(x);pausefigure(2); %在第二窗口绘图plot(x,z);title(cos(x);,4. 缩放图形,zoom on 为当前图形打开缩放模式 zoom off 关闭缩放模式,note:单击鼠标左键,则在当前图形窗口中,以鼠标点中的点为中心的图形放大2倍;单击鼠标右键,则缩小2倍.,x=linspace(0,2*pi,30);y=sin(x);plot(x,y)zoom on,【例】 缩放y=sin(x)的图形.,5. 改变视角view,Note:命令view(a,b)改变视角到(a,b),a是方位角,
25、b为仰角.缺省视角为(-37.5,30).,view(x,y,z),note: view用空间向量表示的,三个量只关心它们的比例,与数值的大小无关,x轴view(1,0,0),y轴view(0,1,0),z 轴view(0,0 ,1).,view(a,b),x=-3:0.1:3; y=1:0.1:5;X,Y=meshgrid(x,y); % X:以向量x作为行元素,行数=length(y), Y:以向量y作为列元素,列数=length(x);Z=(X+Y).2;subplot(2,2,1) mesh(X,Y,Z)subplot(2,2,2) mesh(X,Y,Z) view(50,-34)su
26、bplot(2,2,3) mesh(X,Y,Z) view(-60,70) subplot(2,2,4) mesh(X,Y,Z) view(0,1,1),【例】 画出曲面Z=(X+Y)2在不同视角的网格图.,7. 动画,Moviein( )产生一个帧矩阵来存放动画中的帧 Getframe对当前的图像进行快照 movie( )按顺序回放各帧,帧(zhen):量词,一幅字画叫一帧,影片是由一张张连续的图片组成的,每幅图片就是一帧.,x,y,z=peaks(30); surf(x,y,z)axis(-3 3 -3 3 -10 10)m=moviein(15); % 产生15张图画for i=1:15view(-37.5+24*(i-1),30)m(:,i)=getframe; endmovie(m),【例】 将曲面peaks做成动画.,% 按照一定的次序将图 片快照并储存起来;,% 将15张图片做成动画,