surf:
surf(X,Y,Z) 创建一个三维曲面图,它是一个具有实心边颜色和实心面颜色的三维曲面。
该函数将矩阵 Z 中的值绘制为 X 和 Y 定义的 x-y 平面中网格上方的高度。表面的颜色根据 Z 指定的高度而变化。
surf(X,Y,Z,C) 额外指定表面颜色。
surf(Z) 创建一个曲面图,并使用 Z 中元素的列和行索引作为 x 和 y 坐标。
surf(Z,C) 指定表面颜色。
surf(ax,___) 绘制到由 ax 指定的坐标区,而不是当前坐标区。将坐标区指定为第一个输入参数。
surf(___,Name,Value) 使用一个或多个名称-值对参数指定表面属性。例如,'FaceAlpha',0.5 创建一个半透明曲面。
s = surf(___) 返回图表表面对象。创建曲面后,使用 s 对其进行修改。有关属性列表,请参阅表面属性。
mesh:
mesh(X,Y,Z) 创建一个网格图,它是一个具有实心边颜色但没有面颜色的三维曲面。
该函数将矩阵 Z 中的值绘制为 X 和 Y 定义的 x-y 平面中网格上方的高度。边缘颜色根据 Z 指定的高度而变化。
mesh(Z) 创建一个网格图,并使用 Z 中元素的列和行索引作为 x 和 y 坐标。
mesh(Z,C) 还指定边缘的颜色。
mesh(___,C) 还指定边缘的颜色。
mesh(ax,___) 绘制到由 ax 指定的坐标区,而不是当前坐标区。将坐标区指定为第一个输入参数。
mesh(___,Name,Value) 使用一个或多个名称-值对参数指定曲面属性。例如,'FaceAlpha',0.5 创建一个半透明的网格图。
pcolor:
pcolor(C) 使用矩阵 C 中的值创建伪彩色图。伪彩色图将矩阵数据显示为彩色单元格(称为面)的数组。
MATLAB将此图创建为 x-y 平面。表面由对应于面的角(或顶点)的 x 和 y 坐标网格定义。网格覆盖区域 X=1:n 和 Y=1:m,其中 [m,n] = size(C)。矩阵 C 指定顶点的颜色。每个面的颜色取决于其四个周围顶点之一的颜色。在四个顶点中,x-y 网格中最先出现的那个决定了面的颜色。
pcolor(X,Y,C) 指定顶点的 x 和 y 坐标。 C 的大小必须与 x-y 坐标网格的大小相匹配。例如,如果 X 和 Y 定义一个 m×n 网格,则 C 必须是一个 m×n 矩阵。
举例子前先看下meshgrid函数:
meshgrid:创建二维网格坐标,例子中会用到
[X,Y] = meshgrid(x,y) 根据向量 x 和 y 中包含的坐标返回二维网格坐标。
X 是一个矩阵,其中每一行都是复制向量x,Y 是一个矩阵,其中每一列都是复制向量y。
由坐标 X 和 Y 表示的网格:x作为X轴坐标,y作为Y轴坐标
[X,Y] = meshgrid(x) 与 [X,Y] = meshgrid(x,x) 相同,返回网格大小为 length(x)-by-length(x) 的方形网格坐标。
[X,Y,Z] = meshgrid(x,y,z) 返回由向量 x、y 和 z 定义的 3-D 网格坐标。由 X、Y 和 Z 表示的网格的大小为 length(y)-by-length(x)-by-length(z)。
[X,Y,Z] = meshgrid(x) 与 [X,Y,Z] = meshgrid(x,x,x) 相同,返回 3-D 网格坐标,网格大小为 length(x)-by-length (x)-乘长(x)。
举例1:
[X,Y] = meshgrid(-5:.5:5); %生成长和宽都是[-5,5]的网格坐标
Z = Y.*sin(X) - X.*cos(Y);
figure(1);
set(gcf, 'unit', 'centimeters', 'position', [10 5 28 20]);
subplot(221)
mesh(X,Y,Z)
title('例1 mesh结果')
subplot(222)
surf(X,Y,Z)
title('例1 surf结果')
subplot(223)
surf(X,Y,Z)
view(0,90)
title('例1 surf俯视看x-y平面结果')
subplot(224)
pcolor(X,Y,Z)
title('例1 pcolor结果')
结果:
举例2:
[X,Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
figure(2);
set(gcf, 'unit', 'centimeters', 'position', [10 5 28 20]);
subplot(221)
mesh(X,Y,Z)
title('例2 mesh结果')
subplot(222)
surf(X,Y,Z)
title('例2 surf结果')
subplot(223)
surf(X,Y,Z)
view(0,90)
title('例2 surf俯视看x-y平面结果')
subplot(224)
pcolor(X,Y,Z)
title('例2 pcolor结果')
结果:
区别和联系:
从以上例子可以看出:
mesh生成一个带颜色的网格图,网格线的颜色和其值的大小有关
surf生成一个带颜色的曲面图,相当于对mesh生成的网格图中每个网格填充颜色,颜色和其值的大小有关
pcolor(X,Y,Z)相当于:surf(X,Y,Z),view(0,90)。即俯视看surf生成的三维曲面的x-y平面
参考:
Mesh surface plot - MATLAB mesh (mathworks.com)