我在matlab中有一个28x28x10000的矩阵。我希望将其重新整形为10000 * 784的矩阵,每个28x28子矩阵被挤压成一排。所以我试过
reshape(mat, 10000, 784)
虽然这确实给了我一个正确形状的矩阵,但值不正确。有没有人知道另一种方法,最好没有for循环?
答案 0 :(得分:3)
reshape
从矩阵中逐列获取元素。出于您的目的,这意味着如果您重新排列原始矩阵的尺寸(使用permute),您可以像以前一样使用重塑:
reshape(permute(mat,[3 1 2]), 10000, []);
[3 1 2]
的{{1}}参数表示使用第3维作为第1维,然后使用原始第1维作为新第2维,将原第2维作为新第3维作为第3维,为permute
1}}矩阵。每列包含10000个元素,因此按照重新整形的方式逐行进行操作会为您提供所需的内容。