1、平面网格数据的生成
在绘制曲面之前,需要先将数据点生成平面数据网格,其生成的数据是网格的坐标。
生成的方式有两种:
(1)利用矩阵运算生成
代码示例:
x = 2:6;
y = (3:8)';
X = ones(size(y))*x;
Y = y*ones(size(x));
其中,X,Y为生成的网格数据,下图为网格数据的示意图。
(2)利用meshgrid函数生成
[X, Y] = meshgrid(x, y):其中,x、y为向量,存储网格点坐标的X、Y为矩阵。
代码示例:
x = 2:6;
y = (3:8)';
[X, Y] = meshgrid(x, y);
其效果与方法1效果相同。
2、使用mesh与surf函数绘制三维曲面图
函数功能:mesh函数绘制三维网格图,surf函数绘制三维网格图。
调用格式:
mesh(x, y, z, c)
surf(x, y, z, c)
其中,x、y为网格坐标矩阵,z为网格点上的高度矩阵,c用于指定在不同高度下的曲面颜色(当不输入c时,使用z代表高度颜色)。
代码示例:
clc;
clear all;t = -2:0.2:2;
[X, Y] = meshgrid(t);
Z = X.*exp(-X.^2 - Y.^2);
subplot(1,3,1);
mesh(X,Y,Z);title('网格图');
subplot(1,3,2);
surf(X,Y,Z);title('曲面图');
subplot(1,3,3);
plot3(X,Y,Z);title('线条图');
grid on
运行结果:
3、拓展函数
其调用格式与mesh函数surf函数一致。
代码示例:
clc;
clear all;[x, y] = meshgrid(0:0.1:2, 1:0.1:3);
z = (x-1).^2 + (y-2).^2-1;
subplot(2,2,1);
meshc(x,y,z);title('meshc(x,y,z)');
subplot(2,2,2);
meshz(x,y,z);title('meshz(x,y,z)');
subplot(2,2,3);
surfc(x,y,z);title('surfc(x,y,z)');
subplot(2,2,4);
surfl(x,y,z);title('surfl(x,y,z)');
运行结果: