本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

surfc

三维着色曲面图下的等高线图

语法

surfc(Z)
surfc(Z,C)
surfc(X,Y,Z)
surfc(X,Y,Z,C)
surfc(...,'PropertyName',PropertyValue)
surfc(axes_handles,...)
h = surfc(...)

说明

surfc(Z) 通过矩阵 Z 中的 z 分量在三维着色曲面下创建一个等高线图(使用 x = 1:ny = 1:m,其中 [m,n] = size(Z))。高度 Z 是通过几何矩形网格定义的单值函数。Z 指定颜色数据和曲面高度,因此颜色与曲面高度成比例。

surfc(Z,C) 绘制高度 Z(它是通过几何矩形网格定义的单值函数)并使用矩阵 C(假定与 Z 大小相同)为曲面着色。

surfc(X,Y,Z) 使用 Z 来代表颜色数据和曲面高度。XY 是用于定义曲面的 xy 分量的向量或矩阵。如果 XY 为向量,length(X) = nlength(Y) = m,其中 [m,n] = size(Z)。在这种情况下,曲面顶点是 (X(j), Y(i), Z(i,j)) 三元组。要创建任意域的 X 和 Y 矩阵,请使用 meshgrid 函数。

surfc(X,Y,Z,C) 使用 C 定义颜色。MATLAB® 对该数据执行线性变换以便获取当前颜色图中的颜色。

surfc(...,'PropertyName',PropertyValue) 指定曲面属性以及数据。

surfc(axes_handles,...) 将图形绘制到带有句柄 axes_handle 的坐标区中,而不是当前坐标区 (gca) 中。

h = surfc(...) 返回图曲面和等高线对象的句柄。

示例

全部折叠

peaks 函数的曲面图下显示等高线图。

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

提示

surfc 不接受复数输入。

算法

考虑使用两个自变量 ij 参数化的参数曲面,这些自变量随矩形连续变化;例如,1im 并且 1jnx(i,j)y(i,j)z(i,j) 这三个函数指定曲面。如果 ij 是整数值,它们定义带有整数网格点的矩形网格。函数 x(i,j)y(i,j)z(i,j) 变为三个 m×n 的矩阵,即 XYZ 矩阵。曲面颜色是第四个函数 c(i,j),由矩阵 C 表示。

可以将矩形网格中的每个点视为与它最近的四个相邻点相连。

       i-1,j
         |
i,j-1 - i,j - i,j+1
         |
       i+1,j

此基础矩形网格在曲面上生成四边的补片。要以另一种方式来表示,则 [X(:) Y(:) Z(:)] 返回用于在三维空间中指定点的三元组列表。每个内点都与从矩阵索引继承的四个相邻点相连。曲面边缘的点具有三个相邻点。网格边角处的四个点仅有两个相邻点。这可以定义四边形的网格或四边形网格

您可以通过两种不同的方式指定曲面颜色:在每个补片的顶点或中心。在这一常规设置中,曲面不必是 xy 的单值函数。而且,四边的曲面补片也不必是平面的。例如,您可以在极坐标系、柱坐标系和球面坐标系中定义曲面。

shading 函数设置着色。如果着色是 interpC 必须与 XYZ 的大小相同;它指定顶点处的颜色。曲面补片内的颜色因本地坐标处的颜色而异。如果着色是 faceted(默认值)或 flatC(i,j) 指定曲面补片内的恒定颜色:

 (i,j)   -   (i,j+1)
   |   C(i,j)  |
(i+1,j)  -  (i+1,j+1)

在这种情况下,C 可以与 XYZ 的大小相同,将忽略其最后一行和最后一列。另外,它的行和列维度可以小于 XYZ 的行和列维度。

surfc 函数使用 view(3) 指定视点。

XYZ 的范围或坐标区的 XLimModeYLimModeZLimMode 属性的当前设置(也可通过 axis 函数设置)决定了坐标区的标签。

C 的范围或坐标区的 CLimCLimMode 属性的当前设置(也可通过 caxis 函数设置)可确定颜色映射。颜色的标度值用作当前颜色图的索引。

扩展功能

在 R2006a 之前推出