MATLAB三维图形用来画空间中的曲线和曲面。二元函数 z = f(x, y) 在平面上只能画等高线,要直接看出曲面起伏,就得用三维图。
plot3:三维曲线
画空间里的曲线(例如螺旋线)用 plot3,用法和 plot 接近,多一个 z:
r = 1; % 半径
h = 1; % 螺距
t = 0:0.1:10*pi; % 参数范围
x = r * cos(t);
y = r * sin(t);
z = h * t;
plot3(x, y, z)这是一条三维螺旋线。换标记或颜色的方式和二维一样:
plot3(x, y, z, 'o') % 圆点标记
plot3(x, y, z, '-o', 'MarkerSize', 6, 'MarkerFaceColor', '#CFCFCF')surf:曲面图
曲面图把二元函数画成起伏的表面。先用 meshgrid 生成 x、y 网格,再算 z:
[X, Y] = meshgrid(-2:0.1:2, -2:0.1:2);
Z = X.^2 + Y.^2; % 抛物面
surf(X, Y, Z)MATLAB 自带的 peaks 是常用演示曲面,适合试颜色和光照效果:
[X, Y, Z] = peaks(30);
surf(X, Y, Z)mesh:线框网格图
同样的数据,mesh 只画网格线,不填充表面,方便看网格结构:
[X, Y] = meshgrid(-2:0.1:2);
Z = sin(X) .* cos(Y);
mesh(X, Y, Z)surf 是带填充的表面,mesh 是镂空线框,两种经常对照着看。
三维散点:scatter3
三个变量对应的散点,用 scatter3:
n = 100;
X = randn(n, 1);
Y = randn(n, 1);
Z = randn(n, 1);
scatter3(X, Y, Z, '.')画曲面先造网格
画曲面一般先写 [X, Y] = meshgrid(...),再对网格做点运算算 z,例如 X.^2、sin(X).*cos(Y)。漏掉 meshgrid,或该用点运算却写成矩阵运算,是三维绘图里最常见的两类报错来源。