Reshape multidimensional matrix by page

1 view (last 30 days)
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 Comments
Jan
Jan on 18 Aug 2011
You can edit your original question to insert the missing ")" in the first line.

Sign in to comment.

Accepted Answer

Jan
Jan on 18 Aug 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)

More Answers (0)

Categories

Find more on Matrices and Arrays in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!