La remodelación es, por supuesto, la solución estándar para remodelar una matriz. (¿Qué otra cosa llamarían?) Todavía hay algunos trucos para descubrir.
En primer lugar, ¿la forma más sencilla de convertir una matriz de tamaño [n, m, p] en una matriz de tamaño [n * m, p]?
B = reshape(A,n*m,p);
Pero mejor es la siguiente:
B = reshape(A,[],p);
Si deja uno de los argumentos para formar de nuevo vacía, entonces remodelar calcula el tamaño para usted! Tenga cuidado, si prueba esto y el tamaño de A no se ajusta, entonces obtendrá un error. Por lo tanto:
reshape(magic(3),[],2)
??? Error using ==> reshape
Product of known dimensions, 2, not divisible into total number of elements, 9.
Lógicamente, no podemos crear una matriz con dos columnas de algo que tenga 9 elementos. Puse una función llamada wreshape en la central de MATLAB Central que rellenaría según sea necesario para realizar esta operación sin generar ningún error.
Por supuesto, siempre se puede utilizar trucos como
B = A(:);
para crear un vector directamente a partir de una matriz. Esto es equivalente a la forma
B=reshape(A,[],1);