私は28x28x10000の行列をmatlabに持っています。私はそれを10000 * 784のマトリックスに再形成しようとしています.28x28の各サブマトリックスは行に詰め込まれています. だから私は試しました
reshape(mat, 10000, 784)
これにより、正しい形状のマトリックスが得られますが、値は正しくありません。できればforループなしで、これを行う別の方法を知っている人はいますか?
私は28x28x10000の行列をmatlabに持っています。私はそれを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 のように列ごとに取得すると、必要なものが得られます。