2013-02-27 3 views
1

J'ai une matrice dans matlab de 28x28x10000. Je cherche à le remodeler en une matrice de 10000 * 784, chaque sous-matrice de 28x28 étant coincée dans une rangée. J'ai donc essayéRemodeler une matrice dans matlab

reshape(mat, 10000, 784) 

Bien que cela me donne une matrice de la forme correcte, les valeurs ne sont pas correctes. Est-ce que quelqu'un sait d'une autre façon de le faire, de préférence sans boucles?

Répondre

3

reshape prendre des éléments dans la colonne à partir de la matrice. Pour votre objectif, cela signifie que si vous réorganisez les dimensions de votre matrice originale (en utilisant permute), vous pouvez utiliser remodelez comme vous êtes déjà:

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

L'argument [3 1 2] à permute signifie utiliser la 3ème dimension en 1er , puis le 1er original en tant que nouveau 2ème, et la 2ème dimension originale en tant que nouveau 3ème, vous donnant une matrice 10000x28x28. Chaque colonne contient 10000 éléments, donc prendre colonne par colonne comme forme va fonctionner pour vous donner ce que vous voulez.

+0

C'est exactement ce que je cherchais. Merci beaucoup! – sfendell