MATLAB 程式設計與應用

張智星

3.基本XYZ立體繪圖命令

在科學目視表示(Scientific visualization)中,三度空間的立體圖是一個非常重要的技巧。本章將介紹MATLAB基本XYZ三度空間的各項繪圖命令。

meshplot是三度空間立體繪圖的基本命令,mesh可畫出立體網狀圖,plot則可畫出立體曲面圖,兩者產生的圖形都會依高度而有不同顏色。下列命令可畫出由函數形成的立體網狀圖:

x=linspace(-2, 2, 25); % x軸上取25

y=linspace(-2, 2, 25); % y軸上取25

[xx,yy]=meshgrid(x, y); % xxyy都是21x21的矩陣

zz=xx.*exp(-xx.^2-yy.^2); % 計算函數值,zz也是21x21的矩陣

mesh(xx, yy, zz); % 畫出立體網狀圖


surfmesh的用法類似:

x=linspace(-2, 2, 25); % x軸上取25

y=linspace(-2, 2, 25); % y軸上取25

[xx,yy]=meshgrid(x, y); % xxyy都是21x21的矩陣

zz=xx.*exp(-xx.^2-yy.^2); % 計算函數值,zz也是21x21的矩陣

surf(xx, yy, zz); % 畫出立體曲面圖



為了方便測試立體繪圖,MATLAB提供了一個peaks函數,可產生一個凹凸有致的曲面,包含了三個局部極大點及三個局部極小點,其方程式為:

要畫出此函數的最快方法即是直接鍵入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可將曲面加上圍裙:

[x,y,z]=peaks;

meshz(x,y,z);

axis([-inf inf -inf inf -inf inf]);


waterfall可在x方向或y方向產生水流效果:

[x,y,z]=peaks;

waterfall(x,y,z);

axis([-inf inf -inf inf -inf inf]);


下列命令產生在y方向的水流效果:

[x,y,z]=peaks;

waterfall(x',y',z');

axis([-inf inf -inf inf -inf inf]);


meshc同時畫出網狀圖與等高線:

[x,y,z]=peaks;

meshc(x,y,z);

axis([-inf inf -inf inf -inf inf]);


surfc同時畫出曲面圖與等高線:

[x,y,z]=peaks;

surfc(x,y,z);

axis([-inf inf -inf inf -inf inf]);


contour3畫出曲面在三度空間中的等高線:

contour3(peaks, 20);

axis([-inf inf -inf inf -inf inf]);


contour畫出曲面等高線在XY平面的投影:

contour(peaks, 20);


plot3可畫出三度空間中的曲線:

t=linspace(0,20*pi, 501);

plot3(t.*sin(t), t.*cos(t), t);


亦可同時畫出兩條三度空間中的曲線:

t=linspace(0, 10*pi, 501);

plot3(t.*sin(t), t.*cos(t), t, t.*sin(t), t.*cos(t), -t);