基于MATLAB三维曲面图
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ezmesh, ezsurf:
如果我們只是要很快地檢視一個具有二個輸入 的函數的圖形,就可以使用 ezmesh 或是 ezsurf 等來快速地畫出函數的曲面圖形
範例4-13:plotxyz091.m
subplot(2,2,1); subplot(2,2,2); subplot(2,2,3); subplot(2,2,4);
4-1 基本立體繪圖指令
範例4-3 :plotxyz011.m meshgrid 的作用是產生 x 及 y (均為向量) 為 基準的格子點 (Grid Points),其輸出為 xx 及 yy(均為矩陣),分別代表格子點的 x 座標及 y 座標。
MATLAB 程式設計入門篇:三維立體繪圖
4-1 基本立體繪圖指令
MATLAB 程式設計入門篇:三維立體繪圖
4-1 基本立體繪圖指令
peaks的圖形
MATLAB 程式設計入門篇:三維立體繪圖
4-1 基本立體繪圖指令
meshz:
meshz 指令有將曲面加上「圍裙」或「舞台」 的效果
範例4-6:plotxyz03.m
[x, y, z] = peaks; meshz(x,y,z); axis tight;
ezmesh('sin(x)/x*sin(y)/y'); ezsurf('sin(x*y)/(x*y)'); ezmeshc('sin(x)/x*sin(y)/y'); ezsurfc('sin(x*y)/(x*y)');
MATLAB 程式設計入門篇:三維立體繪圖
4-1 基本立體繪圖指令
範例4-13:plotxyz091.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); title('xx'); 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
% 在 x 軸 [-2,2] 之間取 25 點 % 在 y 軸 [-2,2] 之間取 25 點 % xx 和 yy 都是 25×25 的矩陣 % zz 也是 25×2 的矩陣
% 畫出立體曲面圖
MATLAB 程式設計入門篇:三維立體繪圖
4-1 基本立體繪圖指令
範例4-5 :plotxyz01.m
MATLAB 程式設計入門篇:三維立體繪圖
meshz
網狀圖加上“圍裙”(或“舞 臺”)
surf, ezsurf
立體曲面圖
曲面圖 surfc, ezsurfc
曲面圖加上等高線
surfl
曲面圖加上光源
MATLAB 程式設計入門篇:三維立體繪圖
4-1 基本立體繪圖指令
整理:基本三維立體繪圖指令的列表
類別
指令
曲線圖
plot3, ezplot3
低階函數
MATLAB 程式設計入門篇:三維立體繪圖
4-1 基本立體繪圖指令
範例4-12:plotxyz09.m
MATLAB 程式設計入門篇:三維立體繪圖
4-1 基本立體繪圖指令
整理:基本三維立體繪圖指令的列表
類別
指令
說明
mesh, ezmesh
立體網狀圖
網狀圖 meshc, ezmeshc 網狀圖加上等高線
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);
MATLAB 程式設計入門篇 三維立體繪圖
MATLAB 程式設計入門篇:三維立體繪圖
4-1 基本立體繪圖指令
mesh 和 surf:
mesh:可畫出立體的「網狀圖」(Mesh Plots) surf:可畫出立體的「曲面圖」(Surface Plots) 範例4-1: plotxyz001.m
MATLAB 程式設計入門篇:三維立體繪圖
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;
% xx 和 yy 都是矩陣 % 計算函數值 zz,也是矩陣
colormap(zeros(1,3));
% 以黑色呈現
MATLAB 程式設計入門篇:三維立體繪圖
4-1 基本立體繪圖指令
範例4-3 :plotxyz011.m
MATLAB 程式設計入門篇:三維立體繪圖
4-1 基本立體繪圖指令
範例4-4 :plotxyz01.m 使用 linspace 來產生較密集的資料,以便畫出由 函數 形成的立體網狀圖
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 軸的說明文字
MATLAB 程式設計入門篇:三維立體繪圖
4-1 基本立體繪圖指令
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)));
% 標示曲面高度
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 點
MATLAB 程式設計入門篇:三維立體繪圖
範例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);
5
3
MATLAB 程式設計入門篇:三維立體繪圖
4-1 基本立體繪圖指令
畫出此函數的最快方法,即是在 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)
[X, Y] = meshgrid(-3:0.1:3);
Z = griddata(x, y, z, X, Y, 'cubic'); mesh(X, Y, Z);
hold on
plot3(x, y, z, '.', 'MarkerSize', 16);
% 晝出 100 個取樣
hold off
axis tight
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-1 基本立體繪圖指令
peaks:
為了方便測試立體繪圖,MATLAB 提供了一個 peaks 函數,可產生一個凹凸有致的曲面,包含了三個局部 極大點(Local Maxima)及三個局部極小點(Local Minima)
其方程式為:
பைடு நூலகம்
y 3(1 x) e2 x2( y1)2 10( x x3 y5 )ex2y2 1 e(x1)2y2
4-1 基本立體繪圖指令
範例4-10:plotxyz07.m
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);
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;
亦可同時畫出兩條三度空間中的曲線 範例4-10:plotxyz07.m
t = linspace(0, 10*pi, 501); plot3(t.*sin(t), t.*cos(t), t, t.*sin(t), t.*cos(t), -t);
% 同時畫兩條曲線
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 點輸出
set(h, 'hori', 'center', 'vertical', 'bottom', 'color', 'r'); % 改變位置及顏色
end
end
MATLAB 程式設計入門篇:三維立體繪圖
4-1 基本立體繪圖指令
範例4-2 :plotxyz002.m
MATLAB 程式設計入門篇:三維立體繪圖
MATLAB 程式設計入門篇:三維立體繪圖
4-1 基本立體繪圖指令
範例4-11:plotxyz08.m
MATLAB 程式設計入門篇:三維立體繪圖
4-1 基本立體繪圖指令
plot3:
上例中,所有的資料點都必需是在格子點上, MATLAB 才能根據每點的高度來作圖。如果所 給的資料點不在格子點上,我們必需先用 griddata 指令來進行內插法以產生格子點
surface line3
等高線
contour, ezcontour
contour3
影像表示 pcolor
說明 立體曲線圖 Surf 用到的低階指令 Plot3 用到的低階指令 平面上的等高線 空間中的等高線 在二維平面中以顏色表示曲面的 高度
MATLAB 程式設計入門篇:三維立體繪圖
4-1 基本立體繪圖指令
x = linspace(-2, 2, 25); y = linspace(-2, 2, 25); [xx, yy] = meshgrid(x, y); zz = xx.*exp(-xx.^2-yy.^2); mesh(xx, yy, zz);
% 在 x 軸 [-2,2] 之間取 25 點 % 在 y 軸 [-2,2] 之間取 25 點 % xx 和 yy 都是 25×25 的矩陣 % 計算函數值,zz 也是 25×25 的矩陣 % 畫出立體網狀圖