1

私は28x28x10000の行列をmatlabに持っています。私はそれを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 に答える