文章目录
- [一、什么是 `meshgrid`?](#一、什么是
meshgrid
?) - 二、基本语法
- [三、为什么需要 meshgrid?](#三、为什么需要 meshgrid?)
- [四、meshgrid 与 ndgrid 的区别](#四、meshgrid 与 ndgrid 的区别)
一、什么是 meshgrid
?
meshgrid
是 MATLAB 中用于生成网格点坐标矩阵的函数,常用于三维绘图(如 surf
, mesh
, contour
, quiver3
)和数值计算。它将一维的向量扩展成二维的矩阵,以便于函数在二维空间中进行计算。
二、基本语法
[X, Y] = meshgrid(x, y)
x
是一个行向量(代表 X 轴上的点)y
是一个列向量(代表 Y 轴上的点)X
是将x
在每一行复制Y
是将y
在每一列复制
它们的维度相同,表示网格上的所有坐标点组合。下图可以示意其基本用法

示例 1: 基本用法
x = 1:3; % [1 2 3]
y = 10:10:30; % [10 20 30]
[X, Y] = meshgrid(x, y)
输出结果:
X = Y =
1 2 3 10 10 10
1 2 3 20 20 20
1 2 3 30 30 30
该示例的图解示意如下

三、为什么需要 meshgrid?
很多函数的定义是形如 f(x,y)
,但如果你有 x
和 y
的一维向量,你需要先生成所有点对组合,才能计算 f(x,y)
的二维结果。meshgrid
正是用来创建这个二维坐标系统的。
示例 2: 可视化函数曲面
x = -5:0.5:5;
y = -5:0.5:5;
[X, Y] = meshgrid(x, y);
Z = sin(sqrt(X.^2 + Y.^2)); % 示例函数
% 绘图
figure
surf(X, Y, Z)
% 图像设置
xlabel('X 轴', 'FontSize', 12);
ylabel('Y 轴', 'FontSize', 12);
zlabel('Z 值', 'FontSize', 12);
title('三维波形函数图像', 'FontSize', 14);
shading interp % 平滑颜色
colormap parula % 设置颜色映射方案
colorbar % 添加颜色条
light % 添加光源
lighting phong % 使用Phong光照模型
material shiny % 材质为"发亮"

四、meshgrid 与 ndgrid 的区别
meshgrid
和 ndgrid
都可以生成网格,但行为略有不同:
-
meshgrid(x, y)
会让输出维度顺序是 (Y, X),适合可视化绘图。 -
ndgrid(x, y)
输出是 (X, Y)。[X1, Y1] = meshgrid(1:3, 4:5); % X1/Y1 是 2行×3列
[X2, Y2] = ndgrid(1:3, 4:5); % X2/Y2 是 3行×2列
维度就会不同。
meshgrid
输出:
X1 = Y1 =
1 2 3 4 4 4
1 2 3 5 5 5
ndgrid
输出:
X2 = Y2 =
1 1 4 5
2 2 4 5
3 3 4 5