You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用meshgrid结合两个向量生成指定规格的均匀网格矩阵obsPos

解决方案:生成均匀间隔的3列网格矩阵

我来帮你搞定这个MATLAB网格生成的需求,思路其实很直接,咱们一步步来:

核心思路拆解

  • 生成坐标向量:因为网格单元是1㎡,所以x方向覆盖0到50米(包含端点)的所有整数点,y方向覆盖0到20米的所有整数点,用MATLAB的冒号运算符就能快速生成。
  • 生成完整网格点集合:用meshgrid把x、y向量转换成二维网格,再把二维数组展平成列向量,就能得到所有网格点的x和y坐标。
  • 拼接成目标矩阵:把x坐标列、y坐标列,再加上全0的第三列,组合成obsPos矩阵。

完整代码示例

% 定义参数
obsXlimit = 50;  % x方向尺寸(单位:米)
obsYlimit = 20;  % y方向尺寸(单位:米)
gridSpacing = 1; % 网格间隔(单位:米)

% 生成x、y方向的坐标向量
xCoords = 0:gridSpacing:obsXlimit;
yCoords = 0:gridSpacing:obsYlimit;

% 生成网格点的笛卡尔积
[X, Y] = meshgrid(xCoords, yCoords);

% 展平成列向量,并拼接全0列得到obsPos
obsPos = [X(:), Y(:), zeros(length(X(:)), 1)];

代码细节说明

  • xCoords = 0:1:50会生成[0,1,2,...,50]共51个点,yCoords生成[0,1,...,20]共21个点,最终obsPos是1071×3的矩阵(51×21=1071个网格点)。
  • meshgrid(xCoords, yCoords)生成两个21×51的二维数组,分别对应每个网格顶点的x和y坐标。
  • X(:)和Y(:)把二维数组按列展平成列向量,zeros(length(X(:)),1)生成和坐标列长度一致的全0列,最后用方括号拼接成三列矩阵。

扩展:生成网格中心坐标

如果你的需求是网格单元的中心坐标(而非顶点),只需要调整坐标向量的起始和结束值:

xCoords = gridSpacing/2 : gridSpacing : obsXlimit - gridSpacing/2;
yCoords = gridSpacing/2 : gridSpacing : obsYlimit - gridSpacing/2;

这样生成的坐标就是每个1㎡网格的中心,比如x方向从0.5到49.5,y方向从0.5到19.5,总点数为50×20=1000个。

内容的提问来源于stack exchange,提问作者mldmnn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:41:06