Como faço para resize uma matriz no MATLAB?

Suponha que eu tivesse uma matriz de 1 por 12 e eu quisesse redimensioná-la para uma matriz de 4 por 3 . Como eu pude fazer isso?

Minha solução atual é meio feia:

for n = 1:(length(mat)/3) out(n,1:3) = mat( ((n-1)*3 + 1):((n-1)*3 + 3) ); end 

Existe uma maneira melhor de fazer isso?

reshape é, obviamente, a solução adequada, como afirmado pela @gnovice .

Um bom recurso de reshape é que permite isso:

 A = 1:12; B = reshape(A,4,[]); B = 1 5 9 2 6 10 3 7 11 4 8 12 

Então, se você não sabe quantas colunas haverá, o reshape irá computá-lo para você. Da mesma forma, o reshape preencherá o número de linhas, se você deixar isso de lado.

 C = reshape(A,[],4) C = 1 4 7 10 2 5 8 11 3 6 9 12 

Experimente a function RESHAPE :

 A = (1-by-12 matrix); B = reshape(A,4,3); 

Observe que a matriz B será preenchida com elementos de A em coluna (ou seja, as colunas serão preenchidas de cima para baixo, movendo-se da esquerda para a direita).

Exemplo:

 >> A = 1:12; >> B = reshape(A,4,3) B = 1 5 9 2 6 10 3 7 11 4 8 12 

para estender a solução do gnovice:

Se você precisar de uma ordem diferente de construção de matriz, use transpose (o ‘operador’) ou permute() para alterar a ordem de dimensão depois de chamar reshape() .