在matlab中重塑矩阵

时间:2013-02-27 00:44:48

标签: matlab

我在matlab中有一个28x28x10000的矩阵。我希望将其重新整形为10000 * 784的矩阵,每个28x28子矩阵被挤压成一排。所以我试过

reshape(mat, 10000, 784)

虽然这确实给了我一个正确形状的矩阵,但值不正确。有没有人知道另一种方法,最好没有for循环?

1 个答案:

答案 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个元素,因此按照重新整形的方式逐行进行操作会为您提供所需的内容。