Reshape multidimensional matrix by page

Suppose you have a multidimensional array A: 64x64x16. How do you reshape it efficiently so A(:,:,1) to A(:,:,16) are 64x64 blocks that form a new 256x256 matrix?
The desired result (256 x 256) is:
[A(:,:,1) A(:,:,2) A(:,:,3) A(:,:,4); A(:,:,5) A(:,:,6) A(:,:,7) A(:,:,8); A(:,:,9) A(:,:,10) A(:,:,11) A(:,:,12); A(:,:,13) A(:,:,14) A(:,:,15) A(:,:,16)]

2 comentarios

Nek Valous
Nek Valous el 18 de Ag. de 2011
Thank you.
Jan
Jan el 18 de Ag. de 2011
You can edit your original question to insert the missing ")" in the first line.

Iniciar sesión para comentar.

 Respuesta aceptada

Jan
Jan el 18 de Ag. de 2011
A = rand(64, 64, 16);
B = reshape(permute(reshape(A, 64, 64*4, 4), [1,3,2]), [256, 256]);
C = [A(:,:,1) A(:,:,2) A(:,:,3) A(:,:,4); ...
A(:,:,5) A(:,:,6) A(:,:,7) A(:,:,8); ...
A(:,:,9) A(:,:,10) A(:,:,11) A(:,:,12); ...
A(:,:,13) A(:,:,14) A(:,:,15) A(:,:,16)];
isequal(B, C)

2 comentarios

Nek Valous
Nek Valous el 18 de Ag. de 2011
Thank you! Very elegant!
Jan
Jan el 18 de Ag. de 2011
You are welcome.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Creating and Concatenating Matrices en Centro de ayuda y File Exchange.

Preguntada:

el 18 de Ag. de 2011

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by