1

我在 matlab 中有一个 28x28x10000 的矩阵。我希望将其重塑为 10000*784 的矩阵,每个 28x28 子矩阵都被压缩成一行。所以我尝试了

reshape(mat, 10000, 784)

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

4

1 回答 1

3

reshape从矩阵中按列取元素。出于您的目的,这意味着如果您重新排列原始矩阵的尺寸(使用permute),您可以像已经使用的那样使用 reshape :

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

[3 1 2]参数permute意味着使用第 3 维作为第 1 维,然后将原始第 1 维作为新的第 2 维,将原始第 2 维作为新的第 3 维,给您一个10000x28x28矩阵。每列包含 10000 个元素,因此像 reshape 那样逐列获取可以满足您的需求。

于 2013-02-27T00:52:59.443 回答