【问题标题】:How to get an ndgrid from a matrix?如何从矩阵中获取 ndgrid?
【发布时间】:2014-04-05 16:39:56
【问题描述】:

V 是具有均匀间隔体素的 3D 矩阵。获取坐标网格/网格网格的一种方法是:

[x y z] = ndgrid( 1:size(V,1), 1:size(V,2), 1:size(V,3) ); 

这感觉是多余的,尤其是在维数更高的情况下。有没有更简洁的方法来做到这一点?

【问题讨论】:

    标签: arrays matlab matrix multidimensional-array


    【解决方案1】:

    我想你可以这样做,因为你有很多维度(或不断变化的维度):

    C = arrayfun(@(x)(1:size(V,x)),1:ndims(V),'UniformOutput',false);
    [outArgs{1:ndims(V)}] = ndgrid(C{:})
    

    所以现在使用你的例子

    outArgs{1} == x;
    outArgs{2} == y;
    outArgs{3} == z;
    

    但是对于 3 维,要么让它拥有它,要么你会发现它更整洁:

    [m, n, p] = size(V);
    [x, y, z] = ndgrid(1:m, 1:n, 1:p);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多