繪製三維曲線
1.用plot3()函數畫三維曲線
最基本的三維圖形函數為plot3,它將二維繪圖函數plot的有關功能擴展到三維空間,可以用來繪製三維曲線。其調用格式為:
plot3(x1,y1,z1,選項1,x2,y2,z2,選項2,…)
其中每一組x,y,z組成一組曲線的坐標參數,選項的定義和plot的選項一樣。當x,y,z是同維向量時,則x,y,z對應元素構成一條三維曲線。當x,y,z是同維矩陣時,則以x,y,z對應列元素繪製三維曲線,曲線條數等於矩陣的列數。
例:
t=0:pi/50:2*pi;
x=8*cos(t);
y=4*sqrt(2)*sin(t);
z=-4*sqrt(2)*sin(t);
plot3(x,y,z,'p');
title('Line in 3-D Space');
text(0,0,0,'origin');
xlabel('X');ylabel('Y');zlabel('Z');grid;
結果:
2、三維網格圖的繪製
在 MATLAB 中,進行三維圖形繪製時,常常需要首先創建三維網格,也就是先創建 平面圖的坐標系。在 MATLAB 中,常用 meshgrid()函數生成網格數據,其調用格式如下。
[X,Y]=meshgrid(x,y):用於生成向量 x 和 y 的網格數據,即變換為矩陣數據 X 和 Y, 矩陣 X 中的行向量為向量 x,矩陣 Y 的列向量為向量 y。[X,Y]=meshgrid(x):生成向量 x 的網格數據,函數等同[X,Y]=meshgrid(x,x)。
[X,Y,Z]=meshgrid(x,y,z) :生成向量 x、y、z 的三維網格數據,生成的數據 X 和 Y 可分別表示三維繪圖中的 x 和 y 坐標。
三維網格圖形是指在三維空間內連接相鄰的數據點,形成網格。在MATLAB中繪製三維網格圖的函數主要有mesh()函數、meshc()函數和meshz()函數。其中,mesh()函數最常 用,其調用格式如下:
mesh(x,y,z):繪製三維網格圖,x、y、z 分別表示三維網格圖形在 x 軸、y 軸和 z 軸 的坐標,圖形的顏色由矩陣 z 決定。
mesh(Z):繪製三維網格圖,分別以矩陣 Z 的列下標、行下標作為三維網格圖的 x 軸、y 軸的坐標,圖形的顏色由矩陣 Z 決定。
mesh(...,C):輸入參數C用於控制繪製的三維網格圖的顏色。mesh(...,'PropertyName',PropertyValue,...):設置三維網格圖的指定屬性的屬性值。
函數 meshc()可繪製帶有等值線的三維網格圖,其調用格式與函數 mesh()基本相同, 但函數 meshc()不支持對圖形網格線或等高線指定屬性的設置。
函數 meshz()可繪製帶有圖形底邊的三維網格圖,其調用格式與函數 mesh()基本相同, 但函數 meshz()不支持對圖形網格線指定屬性的設置。
另外,函數ezmesh()、ezmeshc()和ezmeshz()可根據函數表達式直接繪製相應的三維網格圖。
由於網格線是不透明的,繪製的三維網格圖有時只能顯示前面的圖形部分,而後面的 部分可能被網格線遮住了,沒有顯示出來。 MATLAB中提供了命令 hidden 用於觀察圖形後面隱藏的網格,hidden 命令的調用格式如下:
hidden on:設置網格隱藏部分不可見,默認情況下為此狀態。
hidden off:設置網格的隱藏部分可見。
hidden:該命令用於切換網格的隱藏部分是否可見。
例:繪製簡單的三維網格圖
% 數據準備
t=0:pi/10:pi;
x=sin(t);
y=cos(t);
[X,Y]=meshgrid(x,y);
z =X + Y;
% 繪圖
figure
mesh (z,'FaceColor','W','EdgeColor','K')
grid
title('三維網格圖');
3、三維表面圖的繪製
三維表面圖也可以用來表示三維空間內數據的變化規律,與之前講述的三維網絡圖的 不同之處在於對網格的區域填充了不同的色彩。在 MATLAB 中繪製三維表面圖的函數為 surf()函數,其調用格式如下:
surf(Z):繪製數據 Z 的三維表面圖,分別以矩陣 Z 的列下標、行下標作為三維網格圖的 x 軸、y 軸的坐標,圖形的顏色由矩陣 Z 決定。
surf(X, Y, Z):繪製三維表面圖,X、Y、Z 分別表示三維網格圖形在 x 軸、y 軸和 z 軸的坐標,圖形的顏色由矩陣 Z 決定。
surf(X, Y, Z, C):繪製三維表面圖,輸入參數 C 用於控制繪製的三維表面圖的顏色。
surf(..., 'PropertyName', PropertyValue):繪製三維表面圖,設置相應屬性的屬性值。
函數 surfc()用於繪製帶等值線的三維表面圖,其調用格式同函數 surf()基本相同,函數 surfl()可用於繪製帶光照模式的三維表面圖,與函數 surf()和 surfc()不同的調用格式如下:
surfl(...,'light'):以光照對象 light 生成一個帶顏色、帶光照的曲面。surfl(...,'cdata'):輸入參數 cdata 設置曲面顏色數據,使曲面成為可反光的曲面。
surfl(...,s):輸入參數 s 為一個二維向量[azimuth,elevation],或者三維向量[x,y,z],用於指定光源方向,默認情況下光源方位從當前視角開始,逆時針 45°。
例:簡單對 surf()函數進行舉例
% 數據準備 xi=-10:0.5:10; yi=-10:0.5:10; [x,y]=meshgrid(xi,yi); z=sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2); % 繪圖 surf(x,y,z)
4、三維切片圖的繪製
在MATLAB中slice()函數用於繪製三維切片圖。三維切片圖可形象地稱為「四維圖」,可以在三維空間內表達第四維的信息,用顏色來標識第四維數據的大小。slice()函數的調用格式如下:
slice(v, sx, sy, sz):輸入參數 v 為三維矩陣(階數為 m x n x p),x、y、z 軸默認狀態下分別為 1:m、1:n、1:p,數據 v 用於指定第四維的大小,在切片圖上顯示為不同的顏色,輸入參數 sx、sy、sz 分別用於指定切片圖在 x、y、z 軸所切的位置。
slice(x ,y, z, v, sx, sy, sz):輸入參數 x、y、z用於指定繪製的三維切片圖的 x、y、z軸。
slice(...,'method'):輸入參數method用於指定切片圖繪製時的內插值法,’method』 可以設置的參數有:』linear』(三次線性內插值法,默認)、』cubic』(三次立方內插 值法)、』nearest』(最近點內插值法)。
例:觀察函數在-2≤x≤2、-2≤y≤2、-2≤z≤2 上的體積情況
% 數據準備
xi=-10:0.5:10;
yi=-10:0.5:10;
[x,y]=meshgrid(xi,yi);
z=sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2);
[x,y,z] = meshgrid(-2:.2:2, -2:.25:2, -2:.16:2);
v = x.*exp(-x.^2-y.^2-z.^2);
xslice = [-1.2,.8,2];
yslice = 2;
zslice = [-2,0];
% 繪圖
slice(x,y,z,v,xslice,yslice,zslice)
結果
END
本文部分內容源於CSDN博主「樂清sss」,僅供參考學習,如內容、圖片有任何版權問題,請聯繫處理,24小時內刪除。