MATLAB學習——MATLAB中的三維繪圖指令

2 基本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都是25x25的矩陣

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都是25x25的矩陣

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

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

  • peaks

為了方便測試立體繪圖,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);

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

[x,y,z]=peaks;

waterfall(x,y,z);

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

[x,y,z]=peaks;

waterfall(x,y,z);

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

[x,y,z]=peaks;

meshc(x,y,z);

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

[x,y,z]=peaks;

surfc(x,y,z);

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

contour3(peaks, 20);

  • 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);

3 三維繪圖的主要功能

繪製三維線圖

繪製等高線圖

繪製偽彩色圖

繪製三維網線圖

繪製三維曲面 圖、柱面圖和球面圖

繪製三維多面體並填充顏色

(一)三維線圖

plot3 —— 基本的三維圖形指令

調用格式:

plot3(x,y,z) —— x,y,z是長度相同的向量

plot3(X,Y,Z) —— X,Y,Z是維數相同的矩陣

plot3(x,y,z,s) —— 帶開關量

plot3(x1,y1,z1,』s1』, x2,y2,z2,』s2』, …)

二維圖形的所有基本特性對三維圖形全都適用。 定義三維坐標軸大小

axis([xmin xmax ymin ymax zmin zmax ])

grid on(off) 繪製三維網格

text(x,y,z,『string』) 三維圖形標註

子圖和多窗口也可以用到三維圖形中

例:繪製三維線圖

t=0:pi/50:10*pi;plot3(t,sin(t),cos(t),』r:』)

(二)三維餅圖

pie3([4 3 6 8 9])

(三)三維多邊形

fill3 = fill —— 三維多邊形的繪製和填色與二維多邊形完全相同

調用格式

fill3(x,y,z,『s』) —— 與二維相同

例: 用隨機頂點坐標畫出5個粉色的三角形,並用黃色的○表示頂點

y1=rand(3,5);y2=rand(3,5);y3=rand(3,5);

fill3(y1,y2,y3,』m』);hold on;plot3(y1,y2,y3,』yo』)

(四)三維網格圖

mesh —— 三維網線繪圖函數

調用格式:

mesh(z) —— z為n×m的矩陣,x與y坐標為元素的下標

mesh(x,y,z) —— x,,y,z 分別為三維空間的坐標位置

例,矩陣的三維網線圖

z=rand(6);

0.8808 0.0729 0.4168 0.7694 0.3775 0.4776

0.3381 0.7101 0.0964 0.6352 0.3826 0.7086

0.1895 0.8791 0.6747 0.8965 0.6876 0.2380

0.7431 0.3594 0.5626 0.8784 0.1217 0.3910

0.7189 0.0899 0.8130 0.4865 0.0768 0.9759

0.8792 0.1610 0.8782 0.1131 0.1433 0.6288

z=round(z)

1 0 0 1 0 0

0 1 0 1 0 1

0 1 1 1 1 0

1 0 1 1 0 0

1 0 1 0 0 1

1 0 1 0 0 1

mesh(z);

例:8階hadamard矩陣的網線圖

h2=[1 1;1 -1];h4=[h2 h2;h2 -h2]

h8=[h4 h4;h4 -h4]

1 1 1 1 1 1 1 1

1 -1 1 -1 1 -1 1 -1

1 1 -1 -1 1 1 -1 -1

1 -1 -1 1 1 -1 -1 1

1 1 1 1 -1 -1 -1 -1

1 -1 1 -1 -1 1 -1 1

1 1 -1 -1 -1 -1 1 1

1 -1 -1 1 -1 1 1 -1

mesh(h8)

生成坐標 —— [X,Y]=meshgrid(x,y)

表達式點運算 —— Z=X.^2+Y.^2

X,Y是n×m的矩陣,維數可任 定

X— n

Y— m

Z—

默認方位角:37。5o,俯角30o。

meshgrid—— 網線坐標值計算函數

z=f(x,y) — 根據x,y坐標找出z的高度

例:繪製z=x2+y2的三維網線圖形

x=-5:5; y=x;

[X,Y]=meshgrid(x,y)

Z=X.^2+Y.^2

mesh(X,Y,Z)

colormap( [R,G,B])—— 色圖設定函數

matlab 的顏色數據集合為紅、綠、蘭三顏色矩陣[R,G,B],維數 m×3

r,g,b在[0 1]區間連續取值,理論上顏色種類可達無窮多種

matlab使用三維向量表示一種顏色,常用顏色數據見下表

? 飽和色

[0 0 0] — 黑色

[0 0 1] — 蘭色

[0 1 0] — 綠 色

[0 1 1] — 淺蘭

[1 0 0] — 紅色

[1 0 1] — 粉紅

[1 1 0] — 黃 色

[1 1 1] — 白色

? 調和色

[0.5 0.5 05] — 灰色

[0.5 0 0] — 暗 紅色

[1 0.62 0.4] — 銅色

[0.49 1 0.8] — 淺綠

[0.49 1 0.83] —寶石蘭

(五)三維曲面圖

surf —— 三維曲面繪圖函數,與網格圖看起來一樣

與三維網線圖的區別:

網線圖:線條有顏色,空擋是黑色的(無顏色)

曲面圖:線條是黑色的,空擋有顏色(把線條之間的空擋填充顏色,沿z軸按每一網格變化

調用格式:

surf(x,y,z) —— 繪製三維曲面圖,x,y,z為圖形坐標向量

例:

[X,Y,Z]=peaks(30)

※peaks為matlab

自動生成的三維測

試圖形

surf(X,Y,Z)

三維網線圖作圖要領

surfc(X,Y,Z) — 帶等高線的曲面圖

[X,Y,Z]=peaks(30);surfc(X,Y,Z)

surfl(X,Y,Z) —— 被光照射帶陰影的曲面圖

[X,Y,Z]=peaks(30);surfl(X,Y,Z)

cylinde(r,n) — 三維柱面繪圖函數

r 為半徑;n為柱面圓周等分數

例:繪製三維陀螺錐面

t1=0:0.1:0.9;

t2=1:0.1:2;

r=[t1 -t2+2];

[x,y,z]=cylinder(r,30);

surf(x,y,z);

grid

? 為球面等分數,預設為20

例:繪製三維球面

[x,y,z]=sphere(30);surf(x,y,z);

(六)圖形修飾方法

a. 圖形顏色的修飾

matlab 有極好的顏色表現功能,其顏色數據又構成了一維新的數據集合,也可稱為四維圖形

colormap(MAP) —— 色圖設定函數,MAP為m×3維色圖矩陣

圖形顏色可根據需要任意生成,也可用matlab配備的色圖函數

matlab 的色圖函數:

hsv —— 飽和值色圖

gray —— 線性灰度色圖

hot —— 暖色色圖

cool —— 冷色色圖

bone —— 蘭色調灰色圖

copper —— 銅色色圖

pink —— 粉紅色圖

prism —— 光譜色圖

jet —— 飽和值色圖II

flag —— 紅、白、藍交替色圖

shading faceted — 網格修飾,預設方式

shading flat —— 去掉黑色線條,根據小方塊的值確定顏色

shading interp —— 顏色整體改變,根據小方塊四角的值差補過度點的值確定顏色

b. 圖形效果修飾

透視與消隱—— 用於網線圖

裁剪修飾 ——用於網線圖、曲面圖

視角修飾 —— 觀察不同角度的三維視圖

其它修飾:

i. 水線修飾

ii. 等高線修飾

透視與消隱

p=peaks(30); mesh(p);hidden on

視角修飾(函數view(az,el))

az ----方位角;el ---- 俯視角

省缺值為:az=-37.5; el=30

例。觀察不同視角的波峰圖形

z=peaks(40);

subplot(2,2,1);mesh(z);

subplot(2,2,2);mesh(z);view(-15,60);

subplot(2,2,3);mesh(z);view(-90,0);

subplot(2,2,4);mesh(z);view(-7,-10);

其它修飾:

i. 水線修飾 (waterfall)

waterfall(peaks(30))

ii. 等高線修飾

二維

contour(Z,n)-------- 繪製n條等高線

C= contourc(Z,n)------計算n條等高線的坐標

Clable(c)------給等高線加標註

例、 在二維平面上繪製peaks函數的10條等高線

contour(peaks,10);

C=contourc(peaks,10);clabel(C)

(七)偽彩色圖

pcolor —— 常用於以二維平面圖表現三維圖形的效果,用顏色表示三維圖形的高度。

(八)動畫效果

動畫生成的步驟

創建幀矩陣 —— moviein

對動畫中的每一幀生成圖形,並把它們放到幀矩陣中 —— getframe

從幀矩陣中回放動畫


推薦閱讀:

TAG:MATLAB | 繪圖 | 數學建模 |