在matlab中重塑矩阵

在matlab中重塑矩阵,matlab,Matlab,我在matlab中得到了一个矩阵,它是28x28x1000。我想把它重塑成一个10000*784的矩阵,每个28x28的子矩阵被压缩成一行。所以我试过了 reshape(mat, 10000, 784) 虽然这确实给了我一个正确形状的矩阵,但值是不正确的。有人知道另一种方法吗,最好不用for循环?重塑从矩阵中按列获取元素。出于您的目的,这意味着如果您重新排列原始矩阵的尺寸(使用),您可以像现在这样使用“重塑”: reshape(permute(mat,[3 1 2]), 10000, []);

我在matlab中得到了一个矩阵,它是28x28x1000。我想把它重塑成一个10000*784的矩阵,每个28x28的子矩阵被压缩成一行。所以我试过了

reshape(mat, 10000, 784)

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

重塑从矩阵中按列获取元素。出于您的目的,这意味着如果您重新排列原始矩阵的尺寸(使用),您可以像现在这样使用“重塑”:

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

permute
[3 1 2]
参数意味着使用第三维度作为第一维度,然后将原始的第一维度作为新的第二维度,将原始的第二维度作为新的第三维度,从而得到一个
10000x28x28
矩阵。每列包含10000个元素,因此,像“重塑”这样逐列执行操作将为您提供所需的内容。

这正是我想要的。谢谢!