arrays - 将 ndgrid 的输出转换为单个数组

标签 arrays matlab cell-array

我想从向量 xi 创建一个 n 维网格,它指定维度 i 中所需的网格点。输出应该是单个 N x n 矩阵,其中 N=b1*b2*b3*...*bn 是网格点的总数,bi 是沿该维度所需的网格点的数量。 (我想在 Matlab 中执行此操作。)

我知道我可以使用 ndgrid 函数来创建这个 n 维网格,但是 ndgrid 返回 n 个元胞数组,每个维度为 b1xb2xb3x...xbn。如何根据需要将其转换为单个数组?

另一个复杂的情况是:我事先不知道维度 n。

最佳答案

David 在他的评论中已经明白了这个想法,只是 n>=4 的一个小错误。

function grid_array = ndgridarr(n, varargin)

    assert(length(varargin) == 1 || length(varargin) == n);

    grid_cells = cell(1, n);
    [grid_cells{:}] = ndgrid(varargin{:});

    grid_array = reshape(cat(n+1,grid_cells{:}),[],n);
end

另一种方法是使用 file exchange 中的 allcomb或者 combvec(深度学习工具箱)。它们都已经返回单个矩阵,无需将元胞数组缝合在一起。

关于arrays - 将 ndgrid 的输出转换为单个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60714394/

相关文章:

arrays - 在 TI-84 上创建数组并抓取数据

php - json循环php,带有不带id的数组

image - 在Matlab中应用变换后如何保持初始图像大小?

MATLAB 不显示正确的计算

c# - 通过检查元素的条件将列表拆分为子列表

arrays - Concourse CI - 数组变量

opengl - 如何使用 Matlab Psychtoolbox (OpenGL) 放大/拉伸(stretch)纹理?

matlab - 注释某些行时 Matlab 中的单元格数组串联错误

matlab - 如何将 {1xN cell} 数组的 {Mx1} 元胞数组转换为 {Mx1 cell} 数组的 {1xN} 元胞数组?

matlab - 元胞数组 MATLAB 中的平均值