在科學目視表示(Scientific
visualization)中,三度空間的立體圖是一個非常重要的技巧。本章將介紹MATLAB基本XYZ三度空間的各項繪圖命令。
mesh和plot是三度空間立體繪圖的基本命令,mesh可畫出立體網狀圖,plot則可畫出立體曲面圖,兩者產生的圖形都會依高度而有不同顏色。下列命令可畫出由函數形成的立體網狀圖:
x=linspace(-2, 2, 25); % 在x軸上取25點
y=linspace(-2, 2, 25); % 在y軸上取25點
[xx,yy]=meshgrid(x, y); % xx和yy都是21x21的矩陣
zz=xx.*exp(-xx.^2-yy.^2); % 計算函數值,zz也是21x21的矩陣
mesh(xx, yy, zz); % 畫出立體網狀圖
surf和mesh的用法類似:
x=linspace(-2, 2, 25); % 在x軸上取25點
y=linspace(-2, 2, 25); % 在y軸上取25點
[xx,yy]=meshgrid(x, y); % xx和yy都是21x21的矩陣
zz=xx.*exp(-xx.^2-yy.^2); % 計算函數值,zz也是21x21的矩陣
surf(xx, yy, zz); % 畫出立體曲面圖
為了方便測試立體繪圖,MATLAB提供了一個peaks函數,可產生一個凹凸有致的曲面,包含了三個局部極大點及三個局部極小點,其方程式為:
要畫出此函數的最快方法即是直接鍵入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)
我們亦可對peaks函數取點,再以各種不同方法進行繪圖。meshz可將曲面加上圍裙:
meshz(x,y,z);
axis([-inf inf -inf inf -inf inf]);
waterfall可在x方向或y方向產生水流效果:
waterfall(x,y,z);
axis([-inf inf -inf inf -inf inf]);
下列命令產生在y方向的水流效果:
waterfall(x',y',z');
axis([-inf inf -inf inf -inf inf]);
meshc同時畫出網狀圖與等高線:
meshc(x,y,z);
axis([-inf inf -inf inf -inf inf]);
surfc同時畫出曲面圖與等高線:
surfc(x,y,z);
axis([-inf inf -inf inf -inf inf]);
contour3畫出曲面在三度空間中的等高線:
axis([-inf inf -inf inf -inf inf]);
contour畫出曲面等高線在XY平面的投影:
plot3可畫出三度空間中的曲線:
plot3(t.*sin(t), t.*cos(t), t);
亦可同時畫出兩條三度空間中的曲線:
plot3(t.*sin(t), t.*cos(t), t, t.*sin(t), t.*cos(t), -t);