【问题标题】:Reshaping a 3 dimensional array to 2 dimensions将 3 维数组重塑为 2 维
【发布时间】:2013-08-03 00:30:52
【问题描述】:

我有一个尺寸为 427x470x48 的 3 维矩阵

我想把它改造成一个二维矩阵:48x200690

这意味着 old(1, 1, :) 将对应于 new(:, 1)

此外,old(1,2,:) 将对应于 new(:,2) 等等。

谢谢

【问题讨论】:

    标签: matlab matrix multidimensional-array reshape


    【解决方案1】:

    做:

    new = reshape(permute(old, [3 2 1]), 48, []);
    

    您还可以通过以下方式粗略检查它们是否相等:

    numel(intersect(old(1,1,:),new(:,1))) == 48;
    

    【讨论】:

    • 这不会按照要求将第三维放在首位。
    • 建议:稍微改进一下new = reshape(permute(old, [3 2 1]), 48, []);。这个[] 计算其他维度的乘积并将其分配给reshape 的最后一个维度。因此,只要您想要48xn 输出,n 将永远是正确的。
    • @Floris 不知道,感谢您的建议。更新了我的代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-02
    • 1970-01-01
    • 2017-05-06
    • 1970-01-01
    • 1970-01-01
    • 2021-09-25
    相关资源
    最近更新 更多