04-三维立体绘图

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

4-1 基本立体绘图指令

示范4-3 :plotxyz011.m
MATLAB 程序设计入门篇:三维立体绘图
4-1 基本立体绘图指令

示范4-4 :plotxyz01.m 使用 linspace 来生成较密集的资料,以便画出 由函数 形成的立体网状图
x = linspace(-2, 2, 25); y = linspace(-2, 2, 25); [xx, yy] = meshgrid(x, y); zz = xx.*exp(-xx.^2-yy.^2); 25×25 的矩阵 mesh(xx, yy, zz); % 在 x 轴 [-2,2] 之间取 25 点 % 在 y 轴 [-2,2] 之间取 25 点 % xx 和 yy 都是 25×25 的矩阵 % 计算函数值,zz 也是 % 画出立体网状图
MATLAB 程序设计入门篇:三维立体绘图
4-1 基本立体绘图指令

整理:基本三维立体绘图指令的列表
類別 曲線圖 指令 plot3, ezplot3 說明 立體曲線圖
surface
低階函數 line3 contour, ezcontour 等高線 contour3
Surf 用到的低階指令
Plot3 用到的低階指令 平面上的等高線 空間中的等高線
MATLAB 程序设计入门篇:三维立体绘图
4-1 基本立体绘图指令

示范4-7:plotxyz04.m
MATLAB 程序设计入门篇:三维立体绘图
4-1 基本立体绘图指令


meshc: meshc 可同时画出网状图与「等高线」 (Contours) 示范4-8:plotxyz05.m
[x, y, z] = peaks; meshc(x, y, z); axis tight;
z = [0 2 1; 3 2 4; 4 4 4; 7 6 8]; mesh(z); xlabel('X 轴 = column index'); ylabel('Y 轴 = row index'); % X 轴的说明文字 % Y 轴的说明文字
MATLAB 程序设计入门篇:三维立体绘图
4-1 基本立体绘图指令
plot3(t.*sin(t), t.*cos(t), t);
% 画出 tsin(t),tcos(t),t 的曲线
MATLAB 程序设计入门篇:三维立体绘图
4-1 基本立体绘图指令

示范4-9:plotxyz06.m
MATLAB 程序设计入门篇:三维立体绘图
4-1 基本立体绘图指令

plot3: 亦可同时画出两条三维空间中的曲线 示范4-10:plotxyz07.m

示范4-3 :plotxyz011.m
x = 3:6; y = 5:9; [xx, yy] = meshgrid(x, y); zz = xx.*yy; subplot(2,2,1); mesh(xx); % xx 和 yy 都是矩阵 % 计算函数值 zz,也是矩阵
title('xx'); axis tight
hold on
plot3(x, y, z, '.', 'MarkerSize', 16); 取样 hold off % 昼出 100 个
axis tight
MATLAB 程序设计入门篇:三维立体绘图
4-1 基本立体绘图指令

示范4-12:plotxyz09.m
MATLAB 程序设计入门篇:三维立体绘图
MATLAB 程序设计入门篇:三维立体绘图
4-1 基本立体绘图指令

示范4-11:plotxyz08.m
MATLAB 程序设计入门篇:三维立体绘图
4-1 基本立体绘图指令

plot3: 上例中,所有的资料点都必需是在格子点 上,MATLAB 才能根据每点的高度来作图。 如果所给的资料点不在格子点上,我们必 需先用 griddata 指令来进行内插法以生 成格子点
MATLAB 程序设计入门篇 三维立体绘图
张智星 jang@.tw .tw/~jan g 清大资工系 多媒体检索实验室
MATLAB 程序设计入门篇:三维立体绘图
4-1 基本立体绘图指令



mesh 和 surf: mesh:可画出立体的「网状图」(Mesh Plots) surf:可画出立体的「曲面图」(Surface Plots) 示范4-1: plotxyz001.m
4-1 基本立体绘图指令

示范4-3 :plotxyz011.m meshgrid 的作用是生成 x 及 y (均为矢量) 为基准的格子点 (Grid Points),其输出为 xx 及 yy(均为矩阵),分别代表格子点的 x 座标 及 y 座标。
MATLAB 程序设计入门篇:三维立体绘图
4-1 基本立体绘图指令
set(h, 'hori', 'center', 'vertical', 'bottom', 'color', 'r');
% 改变位置及颜色 end end
MATLAB 程序设计入门篇:三维立体绘图
4-1 基本立体绘图指令

示范4-2 :plotxyz002.m
MATLAB 程序设计入门篇:三维立体绘图
MATLAB 程序设计入门篇:三维立体绘图
4-1 基本立体绘图指令

示范4-5 :plotxyz01.m
MATLAB 程序设计入门篇:三维立体绘图
4-1 基本立体绘图指令


peaks: 为了方便测试立体绘图,MATLAB 提供了一个 peaks 函数,可生成一个凹凸有致的曲面,包含 了三个局部极大点(Local Maxima)及三个局部 极小点(Local Minima) 其方程序为:
t = linspace(0, 10*pi, 501); plot3(t.*sin(t), t.*cos(t), t, t.*sin(t), t.*cos(t), -t); % 同时画两条曲线
MATLAB 程序设计入门篇:三维立体绘图
4-1 基本立体绘图指令

示范4-10:plotxyz07.m
MATLAB 程序设计入门篇:三维立体绘图
MATLAB 程序设计入门篇:三维立体绘图
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, 'cubic'); mesh(X, Y, Z);
y 3(1 x ) e
2 x 2 ( y 1)2
x 3 5 x 2 y 2 1 ( x 1)2 y 2 10( x y )e e 5 3
MATLAB 程序设计入门篇:三维立体绘图
4-1 基本立体绘图指令

画出此函数的最快方法,即是在 MATLAB 命令窗 口直接键入 peaks,可得到下列方程序

示范4-1 :plotxyz001.m
MATLAB 程序设计入门篇:三维立体绘图
4-1 基本立体绘图指令

示范4-2 :plotxyz002.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'); for i=1:size(z,1) for j=1:size(z,2) h=text(j, i, z(i,j), num2str(z(i, j))); 高度 % 标示曲面 % Y 轴的说明文字
MATLAB 程序设计入门篇:三维立体绘图
4-1 基本立体绘图指令


meshz: meshz 指令有将曲面加上「围裙」或「舞 台」的效果 示范4-6:plotxyz03.m
[x, y, z] = peaks; meshz(x,y,z); axis tight;
MATLAB 程序设计入门篇:三维立体绘图
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 基本立体绘图指令

整理:基本三维立体绘图指令的列表
類別 指令 mesh, ezmesh 網狀圖 meshc, ezmeshc meshz 說明 立體網狀圖 網狀圖加上等高線 網狀圖加上“圍裙”(或“舞 臺”)
surf, ezsurf
曲面圖 surfc, ezsurfc surfl
立體曲面圖
曲面圖加上等高線 曲面圖加上光源
影像表示
pcolor
在二維平面中以顏色表示曲面的 高度
MATLAB 程序设计入门篇:三维立体绘图
4-1 基本立体绘图指令


ezmesh, ezsurf: 如果我们只是要很快地检视一个具有二个 输入的函数的图形,就可以使用 ezmesh 或是 ezsurf 等来快速地画出函数的曲面 图形 subplot(2,2,1); ezmesh('sin(x)/x*sin(y)/y'); 示范 4-13:plotxyz091.m subplot(2,2,2); ezsurf('sin(x*y)/(x*y)');
MATLAB 程序设计入门篇:三维立体绘图
4-1 基本立体绘图指令

示范4-4 :plotxyz01.m
MATLAB 程序设计入门篇:三维立体绘图
4-1 基本立体绘图指令

示范4-5 :plotxyz01.m surf 和 mesh 指令的用法类似
x = linspace(-2, 2, 25); y = linspace(-2, 2, 25); [xx,yy] = meshgrid(x, y); zz = xx.*exp(-xx.^2-yy.^2); surf(xx, yy, zz); % 在 x 轴 [-2,2] 之间取 25 点 % 在 y 轴 [-2,2] 之间取 25 点 % xx 和 yy 都是 25×25 的矩阵 % zz 也是 25×2 的矩阵 % 画出立体曲面图
z = 3*(1-x).^2.*exp(-(x.^2) (y+1).^2) ...
- 10*(x/5 - x.^3 - y.^5).*exp(-x.^2y.^2) ... - 1/3*exp(-(x+1).^2 - y.^2)
MATLAB 程序设计入门篇:三维立体绘图
4-1 基本立体绘图指令

peaks的图形
4-1 基本立体绘图指令

示范4-6:plotxyz03.m
MATLAB 程序设计入门篇:三维立体绘图
4-1 基本立体绘图指令


waterfall: waterfall 指令可在 x 方向或 y 方向生 成水流效果 示范4-7:plotxyz04.m
[x, y, z] = peaks; waterfall(x,y,z); axis 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));
% 以黑色呈现
MATLAB 程序设计入门篇:三维立体绘图
MATLAB 程序设计入门篇:三维立体绘图
4-1 基本立体绘图指令

示范4-8:plotxyz05.m
MATLAB 程序设计入门篇:三维立体绘图
4-1 基本立体绘图指令

plot3: plot3 指令可画出三维空间中的曲线 示范4-9:plotxyz06.m
t = linspace(0,20*pi, 501); % 在 0 及 20*pi 中间取 501 点
相关文档
最新文档