2013-02-27 155 views
1

我在matlab中有一个矩阵,它是28x28x10000。我期待将它重新塑造成10000 * 784的矩阵,每个28x28的子矩阵被挤压成一排。所以我试了在matlab中重塑一个矩阵

reshape(mat, 10000, 784) 

虽然这确实给了我一个正确形状的矩阵,但这些值是不正确的。有谁知道另一种方式来做到这一点,最好没有循环?

回答

3

reshape从矩阵中逐列取元素。为了您的目的,这意味着,如果你重新排列(使用permute)的原始矩阵的尺寸,你可以使用重塑像你已经是:

reshape(permute(mat,[3 1 2]), 10000, []); 

[3 1 2]参数permute手段使用第三维是1 ,然后将原始第一个作为新的第二个,将原始的第二个维度作为新的第三个,给出10000x28x28矩阵。每个列包含10000个元素,因此逐个列重塑不会影响您的工作。

+0

这正是我所期待的。非常感谢! – sfendell 2013-02-27 00:54:05