我在 matlab 中有一个 28x28x10000 的矩阵。我希望将其重塑为 10000*784 的矩阵,每个 28x28 子矩阵都被压缩成一行。所以我尝试了
reshape(mat, 10000, 784)
虽然这确实给了我一个正确形状的矩阵,但这些值是不正确的。有谁知道另一种方法来做到这一点,最好没有 for 循环?
我在 matlab 中有一个 28x28x10000 的矩阵。我希望将其重塑为 10000*784 的矩阵,每个 28x28 子矩阵都被压缩成一行。所以我尝试了
reshape(mat, 10000, 784)
虽然这确实给了我一个正确形状的矩阵,但这些值是不正确的。有谁知道另一种方法来做到这一点,最好没有 for 循环?
reshape
从矩阵中按列取元素。出于您的目的,这意味着如果您重新排列原始矩阵的尺寸(使用permute),您可以像已经使用的那样使用 reshape :
reshape(permute(mat,[3 1 2]), 10000, []);
的[3 1 2]
参数permute
意味着使用第 3 维作为第 1 维,然后将原始第 1 维作为新的第 2 维,将原始第 2 维作为新的第 3 维,给您一个10000x28x28
矩阵。每列包含 10000 个元素,因此像 reshape 那样逐列获取可以满足您的需求。