1、MATLAB的图视化功能第四章 MATLAB的图视化功能1. MATLAB的图视化概论 数据图视化能使人们用视觉器官直接感受到数据的许多内在本质 。因此,数据可视化是人们研究科学、认识世界所不可缺少的手段。MATLAB不仅数值计算方面是一个优秀的科技应用软件, 在数据可视化方面也具有上佳表现。 MATLAB具有二维、三维乃至四维的图形表现能力。可以从线型、边界面、色彩、渲染、光线、视角等方面把数据的特征表现出来。 MAT LAB的图视化功能是建立在一组“图形对象”的基础之上的。“图形对象”的核心是图形的句柄(Granhics Handle)操作。 MATLAB的有两个层次的绘图指令:(1) 底
2、层(Lowleve)绘图指令:是直接对句柄进行操作。 底层绘图指令控制和表现数据图形的能力比高层绘图指令强。特点是灵活多变,较难掌握。(2) 高层(Highlevel)绘图指令:建立在底层指令上的绘图指令。 最常用的是高层绘图指令。高层绘图指令简单明了容易掌握,本章介绍高层绘图指令。本章内容按“前易后难”的原则安排。 最常用的二个绘图指令是: plot ;mesh 2. 二维图形(1) plot函数以下例子用来体会plot 的基本的绘图原理。例:绘向量得折线图:hold onx=2.3,4.3,3,4,4.9,1.5,2.8,4.6,5.5;plot(x)plot(x,ro) 注1:plot
3、绘图的基本素材是二维点组(x,y)(1=1,2,.n)。 二维点组(x,y)(1=1,2,.n)的定义形式: *1) x=2.3,4.3,3,4,4.9,1.5,2.8,4.6,5.5; *2) y=0:0.1:5 这种定义方法,默认横坐标是自然数(1,2,3,4.) *3) t=0:pi/100:2*pi x=sin(t) *4) x=1.5,2.3,2.8,3,4,4.3,4.6,4.9,5.5; y=x.2这种定义方法,要注意自变量保持升序。自变量与应变量的体积的一致。 注2:plot 绘图的基本原理是依(x,y)(1=1,2,.n)排列顺序用直线连接。曲线光滑与否与点数相关。hold
4、off t=0:pi/3:2*pi; x=sin(t); plot(t,x,r-) hold on t=0:pi/5:2*pi; x=sin(t); plot(t,x,b-) (1) 坐标系定制 用于对坐标轴进行管理与控制,如刻度,外观,文字说明等*1)坐标轴定制指令(axis) axis用于对坐标轴刻度进行管理与控制。指令形式与作用说明如下: AXIS(XMIN XMAX YMIN YMAX) 设置 x- and y-axes刻度。AXIS(XMIN XMAX YMIN YMAX ZMIN ZMAX) 设置 x- and y-axes和 z-axes刻度。V = AXIS 返回当前图形行向量
5、的刻度设置XMIN XMAX YMIN YMAX或(XMIN XMAX YMIN YMAX ZMIN ZMAX)。 AXIS AUTO 返回刻度设置的系统默认值 AXIS TIGHT 依数据设置刻度 AXIS IJ 设置坐标轴的原点在左上角 AXIS XY 设置坐标轴的原点在左下角 AXIS EQUAL 设置坐标轴的比例因子相等。 AXIS IMAGE AXIS SQUARE AXIS NORMAL AXIS VIS3D AXIS OFF AXIS ON 例:XMIN=1; XMAX=10; YMIN=10; YMAX=100;AXIS(XMIN XMAX YMIN YMAX)plot(1,5
6、0,3,60,5,20,3) *2)其它坐标系:polar例1:polar(THETA, RHO)t=0:0.1:2*pi;r=t;polar(t,r) 例2:对数-对数t=0:0.1:2*pi;r=t;semilogx(t,r) (2)(3) 图视效果强化例:加入格栅;坐标轴标志;文本说明等clf; hold offt=linspace(0,pi*3,30);x=sin(t);hold ony=cos(t);plot(t,x,r-,t,y,g-)grid % 加入格栅xlabel(x轴)ylabel(y轴)title(正弦与余弦曲线)text(1,0,正弦) %text(x,y,正弦) te
7、xt(3,0,余弦)legend(sin(x),cos(x),3)%LEGEND(string,Pos) places the legend in the specified,% 0 = Automatic best placement (least conflict with data)% 1 = Upper right-hand corner (default)% 2 = Upper left-hand corner% 3 = Lower left-hand corner% 4 = Lower right-hand corner% -1 = To the right of the plot
8、%按鼠表 left mouse button 拖legend到指定的位置 (2) 子图clf; hold offt=linspace(0,pi*3,30);x=sin(exp(t);subplot (2,2,2) %(n,m,p(0pm*n)plot (t,x,r-)y=exp(sin(t);subplot (2,2,3)plot (t,y,g-) (3) 特殊二维图形bar直方图loglog双对数坐标曲线compass原点出发的复数向量图(罗盘图)pcolor伪彩图contour在xy平面上绘制等位线图polar极坐标曲线errorbar误差棒棒图PlOt直角坐标二维曲线ezpolt符号函数
9、二维曲线quiver矢量场图feather沿X一轴分布的复数向量图(羽毛图)rose统计频率数扇块图fplot数值函数二维曲线semilogxX一轴对教坐标曲线fill平面多边形填色semilogyy一轴对教坐标曲线gplot绘拓扑图stem火柴杆国hist统计频率数直方图stairs阶梯图例:误差图(errorbar)clf;x=0:0.1:4;y=zeros(size(x);e=rand(size(x);yu=y+e;yd=y-e;errorbar(x,y,e)hold onplot(x,yu,r-);plot(x,yd,r-); (3) 绘图工具mmaxes prop value 修改绘
10、图坐标轴的属性mmcxy(or)xymmcxy 显示图上鼠标的xy坐标mmdraw prop value 在图上画直线rnmfill(x,y,z,c,lb,ub) 填充两条曲线间区域mmgetxy(N) 使用鼠标获取xy坐标mmline prop value 修改所画线条的属性mmtile 平铺多图形窗口mmtext( optional text) 在图上放置或拖曳文本mrnzoom 用橡皮框缩放坐标轴mmzap object 使用鼠标删除文本,线型或坐标轴mmfont prop value 修改文本字体属性 例:clf;x=0:0.1:4;y=zeros(size(x);e=rand(siz
11、e(x);yu=y+e;yd=y-e;errorbar(x,y,e)hold onplot(x,yu,r-);plot(x,yd,r-); yu(1)=0;yu(41)=0;fill(x,yu,r); yd(1)=0;yd(41)=0;fill(x,yd,g); 3. 三维图形(1) plot3(三维直线函数)以下例子用来体会plot 3的基本的绘图原理。例:绘参数方程 x=t;y=sin(t);z=cos(t) 的空间曲线clft=0:0.05:100;x=t;y=sin(t);z=sin(2*t);plot3(x,y,z,b:) 例:空间划线:clft=0:0.1:10;x=t;y=0*o
12、nes(size(x);z=sin(t);plot3(x,y,z,r)hold onz=0*ones(size(x);y=sin(t);plot3(x,y,z,g)xlabel(x);ylabel(y);zlabel(z); (2) 三维曲面网格图例1:划马鞍面: clfx=-4:0.5:4;y=-4:0.5:4;U,V=meshgrid(x,y);Z=-U.4+V.4-U.2-V.2-2*U*V;mesh(Z);xlabel(x);ylabel(y);zlabel(z); 注1:meshgrid的含义,绘图的基础是网格,一个二元系矩阵(x,y)hold offa=ones(9);a1=2*o
13、nes(5);a2=3*ones(2); a(3:7,3:7)=a1;a(5:6,5:6)=a2;meshc(a) 例二:peakS 函数的图形:peakS 函数的表达式 z = 3*(1-x).2.*exp(-(x.2) - (y+1).2) - 10*(x/5 - x.3 - y.5).*exp(-x.2-y.2) - 1/3*exp(-(x+1).2 - y.2) clf;x,y,z=peaks(20);p=peaks(20);subplot(2,2,1);mesh(x,y,z)subplot(2,2,2);meshz(y,x,z)subplot(2,2,3);meshc(p)subpl
14、ot(2,2,4);waterfall(p) 注1:x,y,z=peaks(20):为变换角度带来方便。见二图。 p=peaks(20):默认x,y,z的顺序给p赋值。注2:mesh;meshz;meshc;waterfall,表现上有区别。注3:peaks 是演示函数。MATLAB中有许多不同的演示函数,与演示程序(*demo.m)结合在一起。 如 peaks 图形演示函数 banane 优化演示函数(3) 色彩与效果*1)mesh;SURF;SURFC, SURFL比较 :变更色调(由暖到冷,默认红到兰)的变化方向 shading :涂色方式clf;x= -1.5:0.2:1.5;y=-1
15、:0.2:1;X,Y=meshgrid(x,y);p=sqrt(4-X.2/9-Y.2/4);subplot(3,2,1);mesh(p) ;%有网格 格子图,色调方向:有上到下subplot(3,2,2);surf(p) ;%默认的方向:色调方向:有上到下subplot(3,2,3);surfc(p) ;%带登高线;色调方向:有上到下subplot(3,2,4);surfl(p) ;%色调方向:沿y轴方向shading interp ; %平滑涂色 图,无格线subplot(3,2,5);surfl(p) shading faceted ;%有网格涂色 格子图,有格线;subplot(3,2
16、,6);surfl(p) shading flat ;%有网格涂色 格子图,无格线; *2) SURFL的z-参数。看z-参数 的确定平滑涂色效果(定义变化方向)surfl(p,z);z=(n1,n2,n3)。 clf;x= -0.5:0.3:2.5;y=-0.5:0.3:2;X,Y=meshgrid(x,y);p=(4+X.2/9+Y.2/4);%cm=1 0 0;0 1 0;0 0 1;%colormap(cm)subplot(2,2,1);surfl(p,1,0,0)subplot(2,2,2);surfl(p,0,1,0)subplot(2,2,3);surfl(p,0,0,1)sub
17、plot(2,2,4);surfl(p,1,1,0) (4) 辅助图视效果*1)视角定义view(az,el)clf;x= -1.5:0.2:1.5;y=-1:0.2:1;X,Y=meshgrid(x,y);p=sqrt(4-X.2/9-Y.2/4);subplot(2,2,1);surfl(p);view(30,30)shading interp subplot(2,2,2);surfl(p);view(90,10)shading interp subplot(2,2,3);surfl(p);view(-10,-10)shading interp subplot(2,2,4);surfl(p
18、);view(140,60)shading interp *2)surfl光照模式与光照角度设置, surfl(x,y,z,d,s,k)指令中s 与k 参数d:见(3)s:确定光照角度;z=(sx,sy,sz);默认光照角度是观察角逆时针方向45度k::光照模式:确定强度 ka: 背景光 kd: 漫射光 ks: 定向光 spread:扩散光例:clf;x= -1.5:0.2:1.5;y=-1:0.2:1;X,Y=meshgrid(x,y);Z=sqrt(4-X.2/9-Y.2/4);view(45,45)subplot(2,2,1);surfl(X,Y,Z, 0,45,.1 .6 .4 10)
19、;shading interpsubplot(2,2,2);surfl(X,Y,Z, 20,45,.3 .6 .4 10);shading interpsubplot(2,2,3);surfl(X,Y,Z, 40,45,.6 .6 .4 10);shading interpsubplot(2,2,4);surfl(X,Y,Z, 60,45,.9 .6 .4 10); shading interp *3) 图视放大 zoom on ;zoom off; zoom *鼠标点击变焦(左键放大;右键盘缩小)*鼠标拖拉变焦 t=-16:0.1:16; x=sin(t.*10).*(t.2); plot(
20、t,x,r-) zoom on 4. 超维图形表达(1) 三维色彩表达(色轴;图象的色彩维)clfa=ones(20);a1=2*ones(13);a2=3*ones(7);a3=4*ones(2); a(4:16,4:16)=a1;a(7:13,7:13)=a2;a(10:11,10:11)=a3;subplot(2,1,1)meshc(a)subplot(2,1,2)pcolor(a)colorbar(horiz)colormap(hsv) % shading interp (2) 四维色彩表达(色轴;图象的色彩维)clf x=-5:0.1:5; y=-5:0.25:5; z=-5:0.25:5; n=length(x); X,Y,Z=meshgrid(x,y,z); V=(-X.2-Y.2-Z.2); xi=-4,-2,0,2,4;yi=0.5; zi=-0.5; subplot(2,1,1);slice(x,y,z,V,xi,yi,zi); colorbar(horiz); view(45,45);shading interp xi=0;subplot(2,1,2);slice(x,y,z,V,xi,yi,zi);view(30,45);shading interp (3)色彩变换 spinmap 5. 句柄图形
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2