【问题标题】:Practical differences between meshgrid and ndgrid?meshgrid 和 ndgrid 之间的实际区别?
【发布时间】:2013-10-24 10:23:10
【问题描述】:

关于 pageIdx 和 ndgrid 的讨论越来越密集 here。我现在可以理解meshgrid 但不是ndgrid - 请详细说明可以使用它的实际示例。它与meshgrid 不完全一样:值中有一些奇怪的反转,那么它应该在哪里使用?

【问题讨论】:

  • 来自help meshgrid: "MESHGRID 与 NDGRID 类似,只是前两个输入和输出参数的顺序交换了(即 [X,Y,Z] = MESHGRID(x,y,z ) 产生与 [Y,X,Z] = NDGRID(y,x,z)) 相同的结果。因此,MESHGRID 更适合于笛卡尔空间中的问题,而 NDGRID 更适合于不是的 N-D 问题基于空间。MESHGRID 也仅限于 2-D 或 3-D。"
  • @LuisMendo 当然可以,但它的真正含义/推断是什么? N-D 问题还包括 2-D 和 3-D 问题,那么为什么不一直使用 ndgrid?
  • @hhh:我一直使用ndgrid
  • @hhh 可能是因为在 2D 中,y 轴是第一位的(想想矩阵:行是 y,列是 x)
  • @hhh:由于在我的代码中,我使用的惯例是始终将值存储在矩阵坐标中,而不是图像坐标中,因此我无需使用meshgrid。此外,它是 meshgrid 反向返回 x 和 y :)

标签: matlab


【解决方案1】:

假设您想知道数组的行/列/等索引。您可以为此使用meshgrid,但它会首先输出列,然后是行索引,这可能是错误的来源。

您可以使用ndgrid 而不是meshgrid,它会按照预期的顺序给出索引,即

[rowIndices, colIndices] = ndgrid(1:size(array,1),1:size(array,2));

或者,对于 3D

[rowIndices, colIndices, pageIndices] = ndgrid(1:size(array,1),1:size(array,2),1:size(array,3));

meshgrid 对前两个索引的反转有助于处理绘图或图像处理工具箱函数的某些输出。

但是,当您想计算 4D 高斯的值时,您唯一的选择是使用 ndgrid

[xx,yy,zz,tt] = ndgrid(-3:0.1:3);
out = exp(-xx.^2-yy.^2-zz.^2-tt.^2);

【讨论】:

    猜你喜欢
    • 2020-10-10
    • 1970-01-01
    • 2014-12-19
    • 1970-01-01
    • 2023-03-22
    • 2023-03-08
    • 2021-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多