matlab讲义第四章
图4.11 函数PEAKS的带洞孔曲面图
MATLAB的surf也有两个同种函数:surfc,它画出具有 基本等值线的曲面图。surfl,它画出一个有亮度的曲面 图。例如:
» [X,Y,Z]=peaks(30); » surfc(X,Y,Z) % surf plot with contour plot » grid,xlabel('x-axis'),ylabel('yaxis'),zlabel('z-axis') » title('SURFC of PEAKS')
图4.3 正弦曲线图
利用在x-y平面的矩形网格点上的z轴坐标值,MATLAB 定义了一个网格曲面。MATLAB通过将邻接的点用直线连接起 来形成网状曲面 ,其结果好象在数据点有结点的鱼网。例 如,用MATLAB的函数peaks可以画一个简单的曲面。 » [X,Y,Z]=peaks(30); » mesh(X,Y,Z) » grid on » xlabel('x-axis'),ylabel('y-axis'),zlabel('zaxis') » title('MESH of PEAKS')
图4.4 函数PEAKS的网格图
在显示器上要注意到线的颜色与网格的高度有关。一般情况下, 函数mesh有可选的参量来控制绘图中所用的颜色。关于MATLAB如何 使用、改变颜色在下面讨论。在任何情况下,由于颜色用于增加图 形有效的第四维,这样使用的颜色被称做伪彩色。 上图所示,网格线条之间的区域是不透明的。MATLAB命令 hidden控制网格图的这个特性。例如,用MATLAB的函数sphere产生 两个球面如下: » [X,Y,Z]=sphere(12); » subplot(1,2,1) » mesh(X,Y,Z),title('Opaque') » hidden on; » axis off; » subplot(1,2,2),title('Transparent'); » mesh(X,Y,Z); » hidden off; » axis off;
图4.17 函数PEAKS的伪彩色图
与surf函数相似,可以使用函数shading进行颜色内插。
» [X,Y,Z]=peaks(30); » pcolor(X,Y,Z); » shading interp » hold on » contour(X,Y,Z,20,'k') % add 20 contour lines in black » xlabel('X-axis'),ylabel('Y-axis') » title('PCOLOR and CONTOUR of PEAKS') » hold off
第四章 三维绘图
4.1 基本的三维绘图命令 4.2 三维图形显示的基本技巧 4.3 颜色的使用
4.1 基本的三维绘图命令
MATLAB提供了各种各样的显示三维图形函数。 plot3命令将绘制二维图形的函数plot的特性扩展到三 维空间。函数格式除了包括第三维的信息(Z方向)之外, 与二维函数plot相同。 plot3一般语法调用格式是: plot3(x1,y1,z1,S1,x2,y2,z2,S2,…) xn,yn和zn是向量或矩阵,Sn是可选的字符串,用来指定 颜色、标记符号和(或)线形。 plot3可用来画一个单变量的三维函数。
如下为一个三维螺旋线例子: » t=0:pi/50:10*pi; » plot3(sin(t),cos(t),t) » title('Helix'),xlabel('sint(t)'),ylabel('cos(t)'),zlabel('t') » text(0,0,0,'Origin') » grid on » v = axis v = -1 1 -1 1 0 40
图4.6 meshc函数绘制的网 格图和基本等值线图
图4.7
meshz函数绘制的
带零平面的网格图
函数surf是重要的绘制曲面图函数,除了各线条之间 的空档(称作补片)用颜Байду номын сангаас填充以外,和网格图看起来是 一样的。函数surf使用和函数mesh相同的调用语法。
» [X,Y,Z]=peaks(30); » surf(X,Y,Z) » grid,xlabel('x-axis'),ylabel('y-axis'),zlabel('z-axis') » title('SURF of PEAKS')
4.13 函数PEAKS的带光线照明曲面图
MATLAB提供了另一种基本的三维图形,即三维等值 线图。通过函数contour3来绘制。
» [x,y,z]=peaks(30); » contour3(X,Y,Z,16) % draw sixteen contour lines » grid,xlabel('x-axis'),ylabel('yaxis'),zlabel('z-axis') » title('CONTOUR3 of PEAKS')
图4.9 函数PEAKS的平滑加彩色曲面图
如上所示平滑加色彩的例子中,每一补片仍保存着单 一的颜色,但各块连接处的黑线已去掉。 » shading interp
图4.10 函数PEAKS的插值加彩色曲面图
在MATLAB中,这是通过在所期望的洞孔的所在位置,将数据置为特 定的NaN来实现。由于NaN没有任何值,所有的MATLAB作图函数都忽略 NaN的数据点,在该点出现的地方留下一个洞孔。例子如下:
图4.12 函数PEAKS的曲面图和基本等值线图
» [X,Y,Z]=peaks(30); » surfl (X,Y,Z) % surf plot with lighting » shading interp % surfl plots look best with interp shading » colormap pink % they also look better with shades of a single color » grid,xlabel('X-axis'),ylabel('Yaxis'),zlabel('Z-axis') » title(' SURFL OF PEAKS')
图4.16 函数PEAKS的等值线图
pcolor函数是surf的二维等效函数,采用伪彩色显 示色块。 » [X,Y,Z]=peaks(30); » pcolor(X,Y,Z); % surf plot view from above » xlabel('X-axis'),ylabel('Y-axis') » title('PCOLOR of PEAKS')
二维图形的所有基本特性在三维中仍都存在。axis命令扩展到三维 返回Z轴界限(0和40),在数轴向量中增加两个元素。函数zlabel用来 指定z轴的数据名称,函数grid在图底绘制三维网格。 函数text(x,y,z,'string')在由三维坐标x,y,z所指定的位置放一 个字符串。
图4.1 螺旋线图
图4.8 surf函数绘制PEAKS的曲面图
曲面图的一些特性正好和网格图相反。它的线条是黑 色的,线条之间的补片有颜色;在网格图里,线条有颜色。 在曲面图里,每块就象一块染色玻璃窗口或物体,黑 线便是各单色染色玻璃块之间的连接。除此以外,MATLAB 还提供了平滑加颜色和插值加颜色功能。这可以通过调用 函数shading来实现。
图4.15 函数PEAKS的三维等值线图
有些情况下,希望得到三维数据的二维表示。可通过 MATLAB的contour函数实现。 » [X,Y,Z]=peaks(30); » contour(X,Y,Z,16) % draw sixteen contour lines » xlabel('X-axis'),ylabel('Y-axis') » title('CONTOUR of PEAKS')
子图和多图形窗口可以直接应用到三维图形中。通过指定plot 命令的多个参量或使用hold命令,可以把多条直线或曲线重叠画出。 增加维数的plot3命令可以使多个二维图形沿一个轴排列起来, 而不是直接将二维图形叠到另一个的上面。 » x=linspace(0,3*pi); % x-axis data » z1=sin(x); % plot in x-z plane » z2=sin(2*x); » z3=sin(3*x); » y1=zeros(size(x)); % spread out along y-axis » y3=zeros(size(x)); % by giving each different yaxis values » y2=y3; » plot3(x,y1,z1,x,y2,z2,x,y3,z3); » grid » xlabel('x-axis'),ylabel('y-axis'),zlabel('z-axis') » title('sin(x),sin(2x),sin(3x)')
图4.5 左边球是不透明的(线被隐蔽),右边球是透明的(线未被隐蔽)
MATLAB的mesh有两个同种函数:meshc,它画网格图 和基本的等值线图;meshz,它画包含零平面的网格图。
» [X,Y,Z]=peaks(30); » meshc(X,Y,Z) % mesh plot with underlying contour plot » title('MESHC of PEAKS') » meshz(X,Y,Z) % mesh plot with zero plane » tiTle('MESH of PEAKS') » title('MESH of PEAKS') » hidden off % make mesh transparent so minimums can be seen