三維繪圖
Helix
t = 0:pi/50:10*pi; % linspace(0,10*pi,500);
figure
plot3(sin(t),cos(t),t) grid on
axis square
Remark: zlabel, view, surf
三維繪圖 mesh, surf
mesh:可畫出立體的「網狀圖」(Mesh Plots)
surf: 可畫出立體的「曲面圖」(Surface Plots)
z = [0 2 1; 3 2 4; 4 4 4; 7 6 8];
subplot(1,2,1); mesh(z); title('mesh');
xlabel('x-axis = column index'); % X 軸的說明文字 ylabel('y-axis = row index'); % Y 軸的說明文字 subplot(1,2,2); surf(z); title('surf')
三維繪圖
meshgrid
產生 x 及 y (均為向量) 為基準的格子點 (Grid Points),其輸出為 xx 及 yy(均為矩陣),分別 代表格子點的 x 座標及 y 座標。
linspace
三維繪圖
x = 3:6; y = 5:9;
[xx, yy] = meshgrid(x, y); % xx 和 yy 都是矩陣 zz = xx.*yy; % 計算函數值 zz,也是矩陣
subplot(1,2,1); mesh(zz); axis tight;
title('zz');
subplot(1,2,2); mesh(xx, yy, zz); axis tight;
title('zz w.r.t xx and yy');
三維繪圖
x = linspace(-2,2,25); y = linspace(-2,2,25);
[xx, yy] = meshgrid(x, y);
zz = xx.*exp(-xx.*xx - yy.*yy);
mesh(xx, yy, zz); axis tight;
title('f(x,y) = x exp( -x^2 - y^2 )');
xlabel('x'); ylabel('y'); zlabel('f(x,y)')
三維繪圖
x = linspace(-2,2,25); y = linspace(-2,2,25);
[xx, yy] = meshgrid(x, y);
zz = xx.*exp(-xx.*xx - yy.*yy);
surf(xx, yy, zz); axis tight;
title('f(x,y) = x exp( -x^2 - y^2 )');
xlabel('x'); ylabel('y'); zlabel('f(x,y)')
peaks:
為了方便測試立體繪圖,MATLAB 提供了一個 peaks 函數,可產生一個凹凸有致的曲面,包含了三個局部 極大點(Local Maxima)及三個局部極小點(Local Minima)
其方程式為:
help peaks
y x e x
x y e e
x y x y x y
= − 3 1
− − +− 10 − −
− −−
− + −5
1 3
2 2 1 2 3 5 2 2 1 2 2
( )
( )( )
( )三維繪圖 peaks
延伸學習
meshz, meshc
waterfall
griddata
shading interp
surfl
colormap
延伸學習
類別 指令 說明
網狀圖
mesh
ezmesh 立體網狀圖
meshc
ezmeshc 網狀圖加上等高線
meshz 網狀圖加上“圍裙”(或“舞
臺”)
曲面圖
surf, ezsurf 立體曲面圖
surfc, ezsurfc 曲面圖加上等高線
surfl 曲面圖加上光源
延伸學習
類別 指令 說明
曲線圖 plot3, ezplot3 立體曲線圖
低階函數 surface surf 用到的低階指令 line3 plot3 用到的低階指令 等高線
contour
ezcontour 平面上的等高線 contour3 空間中的等高線
影像表示 pcolor 在二維平面中以顏色表示曲
面的高度
延伸學習
griddata
所有的資料點都必需是在格子點上,MatLab
才能根據每點的高度來作圖。如果所給的資
料點不在格子點上,我們必需先用 griddata
指令來進行內插法以產生格子點。
griddata
griddata
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); hold on;
plot3(x, y, z, '.', 'markersize', 16); % 晝出 100 個取樣 hold off
axis tight
colormap
指令 說明
colormap hsv HSV 的顏色對應表(預設值)
colormap hot 代表“熱”的顏色對應表 colormap cool 代表“冷”的顏色對應表 colormap summer 代表“夏天”的顏色對應表 colormap gray 代表“灰階”的顏色對應表 colormap copper 代表“銅色”的顏色對應表 colormap autumn 代表“秋天”的顏色對應表 colormap winter 代表“冬天”的顏色對應表 colormap spring 代表“春天”的顏色對應表 colormap bone 代表“X 光片”的顏色對應表 colormap pink 代表“粉紅”的顏色對應表 colormap flag 代表“旗幟”的顏色對應表