《维立体绘图》PPT课件.ppt_第1页
《维立体绘图》PPT课件.ppt_第2页
《维立体绘图》PPT课件.ppt_第3页
《维立体绘图》PPT课件.ppt_第4页
《维立体绘图》PPT课件.ppt_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、MATLAB 程序设计入门篇三维立体绘图,CUMCM 暑期培训,2007,7,4-1 基本立体绘图指令,mesh 和 surf: mesh:可画出立体的网状图(Mesh Plots) surf:可画出立体的曲面图(Surface Plots) 范例4-1:plotxyz001.m,z = 0 2 1; 3 2 4; 4 4 4; 7 6 8; mesh(z); xlabel(X 轴 = column index); % X 轴的说明文字 ylabel(Y 轴 = row index);% Y 轴的说明文字,4-1 基本立体绘图指令,4-1 基本立体绘图指令,范例4-2 :plotxyz002.

2、m 若要将与曲面对应的 x 坐标和 y 坐标都一并画出来,还可以使用 mesh 指令,z = 0 2 1; 3 2 4; 4 4 4; 7 6 8; mesh(z); xlabel(X 轴 = column index);% X 轴的说明文字 ylabel(Y 轴 = row index);% Y 轴的说明文字 for i=1:size(z,1) for j=1:size(z,2) h=text(j, i, z(i,j), num2str(z(i, j);% 标示曲面高度 set(h, hori, center, vertical, bottom, color, r); % 改变位置及颜色 e

3、nd end,4-1 基本立体绘图指令,4-1 基本立体绘图指令,范例4-3 :plotxyz011.m meshgrid 的作用是产生 x 及 y (均为向量) 为基准的格子点 (Grid Points),其输出为 xx 及 yy(均为矩阵),分别代表格子点的 x 坐标及 y 坐标,4-1 基本立体绘图指令,范例4-3 :plotxyz011.m,x = 3:6; y = 5:9; xx, yy = meshgrid(x, y);% xx 和 yy 都是矩阵 zz = xx.*yy;% 计算函数值 zz,也是矩阵 subplot(2,2,1); mesh(xx); title(xx); ax

4、is tight subplot(2,2,2); mesh(yy); title(yy); axis tight subplot(2,2,3); mesh(xx, yy, zz); title(zz 对 xx 及 yy 作图); axis tight colormap(zeros(1,3);% 以黑色显示,4-1 基本立体绘图指令,范例4-4 :plotxyz01.m使用 linspace 来产生较密集的数据,以便画出由函数形成的立体网状图,x = linspace(-2, 2, 25);% 在 x 轴 -2,2 之间取 25 点 y = linspace(-2, 2, 25);% 在 y 轴

5、 -2,2 之间取 25 点 xx, yy = meshgrid(x, y);% xx 和 yy 都是 2525 的矩阵 zz = xx.*exp(-xx.2-yy.2); % 计算函数值,zz 也是 2525 的矩阵 mesh(xx, yy, zz);% 画出立体网状图,4-1 基本立体绘图指令,4-1 基本立体绘图指令,范例4-4 :plotxyz01.m,范例4-5 :plotxyz01.msurf 和 mesh 指令的用法类似,x = linspace(-2, 2, 25);% 在 x 轴 -2,2 之间取 25 点 y = linspace(-2, 2, 25);% 在 y 轴 -2

6、,2 之间取 25 点 xx,yy = meshgrid(x, y);% xx 和 yy 都是 2525 的矩阵 zz = xx.*exp(-xx.2-yy.2);% zz 也是 252 的矩阵 surf(xx, yy, zz);% 画出三维曲面图,4-1 基本立体绘图指令,4-1 基本立体绘图指令,范例4-5 :plotxyz01.m,4-1 基本立体绘图指令,peaks: 为了方便测试立体绘图,MATLAB 提供了一个 peaks 函数,可产生一个凹凸有致的曲面,包含了三个局部极大点(Local Maxima)及三个局部极小点(Local Minima) 其方程式为,4-1 基本立体绘图指

7、令,画出此函数的最快方法,即是在 MATLAB 命令窗口直接键入 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,4-1 基本立体绘图指令,peaks的图形,4-1 基本立体绘图指令,meshz: meshz 指令有将曲面加上围裙或舞台的效果 范例4-6:plotxyz03.m,x, y, z = peaks; meshz(x,y,z); axis tight,4-1 基本立体绘图指令,范例4-6:plot

8、xyz03.m,4-1 基本立体绘图指令,waterfall: waterfall 指令可在 x 方向或 y 方向产生水流效果 范例4-7:plotxyz04.m,x, y, z = peaks; waterfall(x,y,z); axis tight,4-1 基本立体绘图指令,范例4-7:plotxyz04.m,4-1 基本立体绘图指令,meshc: meshc 可同时画出网状图与等高线(Contours) 范例4-8:plotxyz05.m,x, y, z = peaks; meshc(x, y, z); axis tight,4-1 基本立体绘图指令,范例4-8:plotxyz05.m

9、,4-1 基本立体绘图指令,plot3: plot3 指令可画出三维空间中的曲线 范例4-9:plotxyz06.m,t = linspace(0,20*pi, 501); % 在 0 及 20*pi 中间取 501 点 plot3(t.*sin(t), t.*cos(t), t); % 画出 tsin(t),tcos(t),t 的曲线,4-1 基本立体绘图指令,范例4-9:plotxyz06.m,4-1 基本立体绘图指令,plot3: 亦可同时画出两条三维空间中的曲线 范例4-10:plotxyz07.m,t = linspace(0, 10*pi, 501); plot3(t.*sin(t

10、), t.*cos(t), t, t.*sin(t), t.*cos(t), -t);% 同时画两条曲线,4-1 基本立体绘图指令,范例4-10:plotxyz07.m,4-1 基本立体绘图指令,plot3: 如果输入自变量是三个大小相同的矩阵 x、y、z,那么 plot3 会依序画出每个行向量在三维空间所对应的曲线 范例4-11:plotxyz08.m,x, y = meshgrid(-2:0.1:2); z = y.*exp(-x.2-y.2); plot3(x, y, z,4-1 基本立体绘图指令,范例4-11:plotxyz08.m,4-1 基本立体绘图指令,plot3: 上例中,所有

11、的数据点都必需是在格子点上,MATLAB 才能根据每点的高度来作图。如果所给的数据点不在格子点上,我们必需先用 griddata 指令来进行内插法以产生格子点,4-1 基本立体绘图指令,范例4-12:plotxyz09.m,x = 6*rand(100,1)-3; % x 为介于 -3, 3 的 100 点随机数 y = 6*rand(100,1)-3; % y 为介于 -3, 3 的 100 点随机数 z = peaks(x, y); % z 为 peaks 指令产生的 100 点输出 X, Y = meshgrid(-3:0.1:3); Z = griddata(x, y, z, X, Y

12、, cubic); mesh(X, Y, Z); hold on plot3(x, y, z, ., MarkerSize, 16);% 100 个取样 hold off axis tight,4-1 基本立体绘图指令,范例4-12:plotxyz09.m,4-1 基本立体绘图指令,整理:基本三维立体绘图指令的列表,4-1 基本立体绘图指令,整理:基本三维立体绘图指令的列表,4-1 基本立体绘图指令,ezmesh, ezsurf: 如果我们只是要很快地观察一个具有二个输入的函数的图形,就可以使用 ezmesh 或是 ezsurf 等来快速地画出函数的曲面图形 范例4-13:plotxyz091

13、.m,subplot(2,2,1);ezmesh(sin(x)/x*sin(y)/y); subplot(2,2,2);ezsurf(sin(x*y)/(x*y); subplot(2,2,3);ezmeshc(sin(x)/x*sin(y)/y); subplot(2,2,4);ezsurfc(sin(x*y)/(x*y,4-1 基本立体绘图指令,范例4-13:plotxyz091.m,4-2 立体图形与图轴的基本技巧,hidden off: 在绘制网状图时,MATLAB 会隐藏被遮盖的网线,若要使被遮盖的网线亦能呈现出来,可用 hidden off 指令 若再键入 hidden on,则恢

14、复原先的设定 范例4-14:plotxyz10.m,x,y,z = peaks; mesh(x,y,z); hidden off axis tight,4-2 立体图形与图轴的基本技巧,范例4-14:plotxyz10.m,4-2 立体图形与图轴的基本技巧,整理:以 on/off 来切换的指令,4-2 立体图形与图轴的基本技巧,rotate3d on: 若要能够旋转立体图形,可已在产生 3D 图形之后(例如输入 peaks 之后),再输入rotate3d on,此时您可以按下鼠标左键来拖曳图轴,以选取最理想的观测角度。 也可以点选图形窗口上面的 图标,就可以开始旋转立体图形,4-2 立体图形与

15、图轴的基本技巧,三维曲线的观测角度: 一般而言,三维曲线的观测角度是由 Azimuth 及 Elevation 来决定,4-2 立体图形与图轴的基本技巧,对二维图形而言,默认值为 Azimuth = 0,Elevation = 90;对三维图形而言,默认值为 Azimuth = -37.5,Elevation = 30。若要改变观测角度,可用 view 指令 范例4-15:plotxyz11.m,peaks; view(0,-30,4-2 立体图形与图轴的基本技巧,范例4-15:plotxyz11.m,4-2 立体图形与图轴的基本技巧,NaN: 有时候我们希望将曲面图切掉一部份,以呈现不同的效

16、果,此时可用 NaN 或 nan(Not a Number,即“非数值”)来取代矩阵某一部份的值,MATLAB 一碰到 NaN,就会“镂空” 范例4-16:plotxyz12.m,X, Y, Z = peaks; Z(10:20,10:20) = nan;% 将 Z 矩阵的一部分代换为 nan surf(X, Y, Z); axis tight,4-2 立体图形与图轴的基本技巧,范例4-16:plotxyz12.m,4-3 曲面颜色的控制,colorbar: 利用 colorbar 指令,可显示 MATLAB 如何以不同颜色来代表曲面的高度 例如先输入peaks,再输入colorbar,4-3

17、 曲面颜色的控制,整理:常用颜色的 RGB 成分,4-3 曲面颜色的控制,colormap: MATLAB 预设的颜色对应表可由 colormap 得知 cm 是一个 643 的矩阵,因此 MATLAB 在画图时,会把 cm 第一列的颜色设定给曲面的最高点,把 cm 的最后一列的颜色设定给曲面的最低点,其余高度的颜色则依线性内插法来决定,cm = colormap; size(cm) ans = 64 3,4-3 曲面颜色的控制,colormap: 改变颜色对应表,可得到不同颜色的曲面 ,欲改变颜色对应表,也是用 colormap 指令 范例4-17:plotxyz13.m,peaks; co

18、lormap(rand(64,3); % 以随机数产生颜色对应表 colorbar,4-3 曲面颜色的控制,范例4-17:plotxyz13.m,4-3 曲面颜色的控制,整理:MATLAB 现成的颜色对照表,4-3 曲面颜色的控制,cool: 使您的曲面使用感觉较冷的颜色 范例4-18:plotxyz14.m,peaks; colormap cool; colorbar,4-3 曲面颜色的控制,范例4-18:plotxyz14.m,4-3 曲面颜色的控制,surf和mesh的颜色设定: 除了以高度来设定颜色之外,surf 及 mesh 指令都可以接受第 4 个输入自变量来作为设定颜色的依据 例

19、如:以曲面的斜率来设定颜色 范例4-19:plotxyz15.m,X, Y, Z = peaks; surf(X, Y, Z, gradient(Z); axis tight; colormap hot,4-3 曲面颜色的控制,范例4-19:plotxyz15.m,4-3 曲面颜色的控制,surf和mesh的颜色设定: 例如:以曲面的曲率来设定颜色 范例4-20:plotxyz16.m,X, Y, Z = peaks; surf(X, Y, Z, del2(Z); axis tight; colormap hot,4-3 曲面颜色的控制,范例4-20:plotxyz16.m,4-3 曲面颜色的

20、控制,briten: 我们可用 brighten 指令来使颜色对照表变亮或变暗 范例4-21:plotxyz17.m,colormap copper subplot(3, 1, 1); rgbplot(colormap); brighten(colormap, 0.5) subplot(3, 1, 2); rgbplot(colormap); brighten(colormap, -0.8) subplot(3, 1, 3); rgbplot(colormap,4-3 曲面颜色的控制,范例4-21:plotxyz17.m,4-3 曲面颜色的控制,True Color: 前例MATLAB 决定颜色的方法称为索引颜色(Indexed Col

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论