Reshape è ovviamente la soluzione standard per rimodellare un array. (Cos'altro chiamerebbero?) Ci sono ancora alcuni trucchi da scoprire.
Innanzitutto, il modo più semplice per trasformare una matrice di dimensioni [n, m, p] in una matrice di dimensioni [n * m, p]?
B = reshape(A,n*m,p);
Ma meglio è questo:
B = reshape(A,[],p);
Se si lascia uno degli argomenti per rimodellare vuota, quindi ridisegnare calcola le dimensioni per voi! Fai attenzione, se provi questo e la dimensione di A non è conforme, avrai un errore. Così:
reshape(magic(3),[],2)
??? Error using ==> reshape
Product of known dimensions, 2, not divisible into total number of elements, 9.
Logicamente, non possiamo creare un array con due colonne da qualcosa che contiene 9 elementi. Ho inserito una funzione denominata wreshape sullo scambio MATLAB Central che si occuperebbe di eseguire le operazioni necessarie senza eseguire l'operazione.
Naturalmente, è sempre possibile utilizzare trucchi come
B = A(:);
per creare un vettore direttamente da una matrice. Ciò equivale a forma
B=reshape(A,[],1);
fonte
2010-02-13 13:33:10