matlab 中的 meshgrid 命令作用是根据一维的 x 向量和 y 向量,生成二维网格坐标矩阵 X 和 Y,这个命令是绘制三维曲面等高线做二元函数数值计算的基础工具,meshgrid 输出的 X 矩阵每一行都是 x 向量重复,Y 矩阵每一列都是 y 向量重复,这样得到的 X 和 Y 维度完全相同,后续就可以直接把二元函数 Z=f (X,Y) 写成矩阵运算形式,不需要写双层 for 循环,这也是 meshgrid 最核心的价值,把一维采样点扩展成二维平面全部坐标点。很多新手会混淆 meshgrid 和 ndgrid,两者生成的矩阵维度排列顺序不一样,meshgrid 默认适配三维绘图 mesh surf 这类函数,做 x y 平面网格优先使用 meshgrid,如果是多维数组维度索引计算才会选用 ndgrid。使用 meshgrid 的时候,输入参数是一维行向量,一般用 linspace 或者冒号等差生成,输出两个同尺寸矩阵,之后计算 Z 矩阵,再调用 mesh surf contour 完成可视化,二元函数计算里面如果缺少 meshgrid,就必须写嵌套循环,代码冗长运行效率低,meshgrid 本质就是利用 matlab 矩阵向量化运算特性,提前铺好全部坐标网格。想要掌握这个命令,需要理解输出矩阵结构,掌握基础调用格式,结合三维绘图实例,同时识别维度不匹配向量顺序错误这类常见问题。
基础调用格式
| 调用格式 | 功能说明 |
|---|---|
| [X,Y] = meshgrid(x,y) | 输入 x 一维向量,y 一维向量,输出二维网格矩阵 X Y |
| [X,Y] = meshgrid(x) | 等价于 x 和 y 使用同一个向量,生成正方形网格 |
| [X,Y,Z] = meshgrid(x,y,z) | 三维版本,生成三维空间网格,用于三维场计算 |
基础语法说明
x 向量对应水平方向也就是横轴采样点
y 向量对应垂直方向也就是纵轴采样点
输出 X 矩阵,行数等于 y 向量元素个数,列数等于 x 向量元素个数
输出 Y 矩阵,行列尺寸和 X 完全一致
详细使用步骤
第一步 准备一维采样向量
使用冒号或者 linspace 生成 x 和 y 一维向量
示例 x = -2:0.5:2
y = -3:0.5:3
第二步 调用 meshgrid 生成网格矩阵
输入代码 [X,Y] = meshgrid (x,y)
执行之后工作区就会出现 X 和 Y 两个矩阵,可以双击工作区查看矩阵数值,确认网格生成正确
第三步 计算二元函数 Z 矩阵
直接写矩阵运算表达式,比如 Z = X.^2 + Y.^2
这里必须使用点运算也就是点乘点幂,因为 X Y 是矩阵,逐元素运算需要加点号,这是高频错误点
第四步 三维可视化绘图
调用 mesh (X,Y,Z) 绘制网格曲面
或者 surf (X,Y,Z) 绘制填充着色曲面
也可以使用 contour (X,Y,Z) 绘制等高线图
原理深度讲解
举个简单例子
x = [1 2 3]
y = [4 5]
执行 [X,Y]=meshgrid (x,y) 之后
X 矩阵
1 2 3
1 2 3
Y 矩阵
4 4 4
5 5 5
可以直观看到,X 每一行重复 x 向量,Y 每一列重复 y 向量,矩阵里面每一组 (X (i,j),Y (i,j)),就对应平面上一个坐标点,所有坐标点组合就是完整网格,二元函数 Z 在每一个坐标点取值,就得到和 X Y 同尺寸的 Z 矩阵,mesh surf 绘图函数就是读取 X Y Z 三组同维度矩阵,把网格点连成曲面。
meshgrid 和 ndgrid 区别
| 对比项 | meshgrid | ndgrid |
|---|---|---|
| 矩阵排列 | 第一维对应 y,第二维对应 x | 第一维对应 x,第二维对应 y |
| 适用场景 | 三维绘图 x y 平面,mesh surf contour | 多维数组索引 数值偏微分计算 |
| 三维绘图兼容性 | 原生适配 | 部分绘图函数需要转置 |
常见出错场景
1 点运算遗漏,写 Z=X^2+Y^2,这个是矩阵幂运算,不是逐元素平方,会报维度错误,必须改成 X.^2
2 输入向量不是一维向量,传入二维矩阵给 meshgrid,直接报错
3 混淆 X Y 含义,把 X 当成横轴向量,Y 当成纵轴向量,后续绘图坐标轴错位
4 三维 meshgrid 版本,输出三个矩阵 X Y Z,很多人忘记三维版本也支持,只记住二维用法
综合总结,matlab 中的 meshgrid 命令核心就是把一维 x y 向量扩展成同尺寸二维坐标矩阵,配合点运算实现二元函数向量化计算,是三维曲面绘图必备前置命令,二维绘图 mesh surf contour 之前基本都要先调用 meshgrid,使用重点记住逐元素计算要用点运算,同时区分 meshgrid 和 ndgrid 的维度排列差异。
【常见问题】
问题 1,matlab 中的 meshgrid 命令生成之后计算 Z 为什么报错
回答 1,matlab 中的 meshgrid 命令生成 X Y 矩阵之后,计算二元函数 Z 需要使用点运算,也就是点幂点乘,如果直接写矩阵幂运算,会被识别成矩阵运算,触发维度报错。
问题 2,matlab 中的 meshgrid 命令可以生成三维网格吗
回答 2,matlab 中的 meshgrid 命令支持三维版本,格式是 [X,Y,Z]=meshgrid (x,y,z),可以生成三维空间网格矩阵,用于三维标量场矢量场相关计算。
问题 3,matlab 中的 meshgrid 命令和 ndgrid 有什么不一样
回答 3,matlab 中的 meshgrid 命令矩阵排列优先适配 x y 平面三维绘图,ndgrid 维度顺序不同,更适合多维数组索引计算,做 mesh surf 绘图优先选用 meshgrid。
问题 4,matlab 中的 meshgrid 命令输入必须是行向量吗
回答 4,matlab 中的 meshgrid 命令输入一般使用一维向量,行向量列向量都可以识别,推荐使用 linspace 或者冒号生成一维行向量,保证代码可读性。
【免责申明】
本文内容基于 matlab 通用语法整理,仅用于 matlab 中的 meshgrid 命令怎么用相关知识科普,不同 matlab 版本函数行为基本一致,不替代 matlab 官方帮助文档,实际编程请以对应版本官方说明为准。
本文来自作者[家宅微知簿]投稿,不代表启知新能源网立场,如若转载,请注明出处:https://www.qzdaily.com.cn/shbk/202611/7094.html
评论列表(4条)
我是启知新能源网的签约作者“家宅微知簿”!
希望本篇文章《matlab 中的 meshgrid 命令怎么用 网格坐标生成详解》能对你有所帮助!
本站[启知新能源网]内容主要涵盖:光伏,风电,储能,氢能,户用光伏,家用光伏,光伏投资,光伏新闻,光伏政策,太阳能,多晶硅,逆变器,太阳能电池,光热,组件
本文概览:matlab 中的 meshgrid 命令作用是根据一维的 x 向量和 y 向量,生成二维网格坐标矩阵 X 和 Y,这个命令是绘制三维曲面等高线做二元函数数值计算的基础工具,meshgrid 输出的 X 矩阵每一行都是 x 向量重复,Y 矩阵每一列都是 y 向量重复,这样得到的 X 和 Y 维度完全相同,后续就可以直接把二元函数 Z=f (X,Y) 写成矩阵运算形式,不需要写双层 for 循环,这也是 meshgrid 最核心的价值,把一维采样点扩展成二维平面全部坐标点。很多新手会混淆 meshgrid 和 ndgrid,两者生成的矩阵维度排列顺序不一样,meshgrid 默认适配三维绘图 mesh surf 这类函数,做 x y 平面网格优先使用 meshgrid,如果是多维数组维度索引计算才会选用 ndgrid。使用 meshgrid 的时候,输入参数是一维行向量,一般用 linspace 或者冒号等差生成,输出两个同尺寸矩阵,之后计算 Z 矩阵,再调用 mesh surf contour 完成可视化,二元函数计算里面如果缺少 meshgrid,就必须写嵌套循环,代码冗长运行效率低,meshgrid 本质就是利用 matlab 矩阵向量化运算特性,提前铺好全部坐标网格。想要掌握这个命令,需要理解输出矩阵结构,掌握基础调用格式,结合三维绘图实例,同时识别维度不匹配向量顺序错误这类常见问题。