How do I convert a 2d matrix to a 3d matrix?

237 views (last 30 days)
A(:,:,1) = ones(2,4);
A(:,:,2) = 2*ones(2,4);
A(:,:,3) = 3*ones(2,4);
C = [ones(2,4);2*ones(2,4);3*ones(2,4)];
In this post and this post, converting 3d matrix A to 2d matrix C is discussed.
However, how do I convert 2d matrix C back to 3d matrix A?
A(:,:,1) =
1 1 1 1
1 1 1 1
A(:,:,2) =
2 2 2 2
2 2 2 2
A(:,:,3) =
3 3 3 3
3 3 3 3
C =
1 1 1 1
1 1 1 1
2 2 2 2
2 2 2 2
3 3 3 3
3 3 3 3

Accepted Answer

Akira Agata
Akira Agata on 26 Dec 2018
It's time to use reshape function! Please try the following:
A = reshape(C',[2,3,3]);
  1 Comment
Linjun He
Linjun He on 26 Dec 2018
I modified the question. And now the answer from @Akira is
A = reshape(C',[2,4,3]);
It works well in this case.
Thank you!

Sign in to comment.

More Answers (1)

Linjun He
Linjun He on 26 Dec 2018
Edited: Linjun He on 26 Dec 2018
Similarly, I find this works:
permute(reshape(C, 2, 3, 4), [1 3 2])
If you find answer from @Akira does not work in your case, you can refer to this answer :p
And this answer is from @Titus

Community Treasure Hunt

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

Start Hunting!