| MATLAB Function Reference | ![]() |
Syntax
surf(Z) surf(X,Y,Z) surf(X,Y,Z,C) surf(...,'PropertyName',PropertyValue) surfc(...) h = surf(...) h = surfc(...)
Description
我們可以使用 surf 與 surfc 來看一些數學函式的圖形,根據矩陣 X 、 Y 與 Z 來繪製的,而顏色可以由矩陣 Z 或 C 決定。
surf(Z)
會建立一個由矩陣 Z 所繪製的立體曲面圖,而 x = 1:n , y = 1:m,[m,n] = size(Z)。曲面的顏色會根據矩陣 Z 作變化,所以顏色是與曲面高度有關係的。
surf(X,Y,Z)
圖形中的顏色會由 Z 決定,所以呈現的顏色會與表面的高度有關係。若 X 與 Y 為向量的話,則 length(X) = n , length(Y) = m , [m,n] = size(Z)。在這種情況下,曲面上的頂點為 。 
surf(X,Y,Z,C)
可以用矩陣 C 來決定呈現的顏色。 MATLAB 會對 C 中的資料作線性轉換來取得顏色的對應。
可以設定圖形表面的性質。surf(...,'PropertyName',PropertyValue)
h = surf(...) 和 h = surfc(...)
傳回一個曲面控制物件。
Algorithm
參數型的曲面可由兩個在矩形中連續變化的參數, i 與 j 繪製成,譬如說 1
i
m 和 1
j
n。 x(i,j) 、 y(i,j) 與 z(i,j), 描述了整個曲面。當 i 與 j 為整數時,則會定義格子點的座標點也為整數。函式 x(i,j) 、 y(i,j) 與 z(i,j) 會變成 m-by-n 的矩陣, X 、 Y 與 Z。而 c(i,j)(定義在矩陣 C)可以描述欲呈現的顏色。
i-1,j | i,j-1 - i,j - i,j+1 | i+1,j
若點在角落上,則它會有兩個鄰居。若點在邊上,則它會有三個鄰居。若點在中間的話,則它會有四個鄰居。
曲面的顏色可用兩種方法呈現 : 在頂點著色或是在每一片的中心點著色。而曲面的圖形不一定要是平面的,也可以用極座標、柱座標以及球座標系統。
shading 函式可以設定陰影。若設定為 interp ,則 C 的大小必須與 X 、 Y 、 Z 相同,它指定了頂點所呈現的顏色。曲面上每一塊的顏色都是由區域座標系中雙線性函式所決定的。若設定為 faceted (預設值) 或 flat, C(i,j) 會指定曲面上每一塊的顏色 :
(i,j) - (i,j+1) | C(i,j) | (i+1,j) - (i+1,j+1)
在這種情況下, C 的大小必須與 X 、 Y 、 Z 相同,且它的最後一行與最後一列會被忽略,所以它列與行的維度可以比 X 、 Y 、 Z 少一維。
surf 與 surfc 函式可以用 view(3) 來指定視角。
X 、 Y 與 Z 的範圍,或是 XLimMode 、 YLimMode 與 ZLimMode 的性質會取決於軸的限制。 axis 會設定這些性質。
C 的範圍,或是 CLim 與 CLimMode 的性質(也會被 caxis 函式設定)會取決於顏色的延展。延伸的顏色會塗在頂點上(以目前的顏色對應)。
Examples
同時畫出 peaks 的曲面圖加等高線 :
[X,Y,Z] = peaks(30);surfc(X,Y,Z)colormap hsv axis([-3 3 -3 3 -10 5])
![]()
對一個介於 -1 ~ 1 Hadamard 矩陣所構成的球體上色。
k = 5; n = 2^k-1; [x,y,z] =sphere(n); c =hadamard(2^k); surf(x,y,z,c); colormap([1 1 0; 0 1 1]) axis equal
![]()
See Also
axis, caxis, colormap, contour, mesh, pcolor, shading, view
| support | surf2patch | ![]() |