Expanding a 2D matrix to 3D

4 views (last 30 days)
Camille Woicekowski
Camille Woicekowski on 17 Jul 2020
Edited: Matt J on 17 Jul 2020
I have a 2D matrix (3000x22) of True/False values (zeros and ones). Each column contains three True values. I want to make this into a 3D matrix (3000x20x3) where the first new dimmension has the first True value, the second has the second True value, and the third has the third True value. How can I do this?

Accepted Answer

Matt J
Matt J on 17 Jul 2020
Edited: Matt J on 17 Jul 2020
Another way,
C=double(A); %A is the given matrix
C(logical(A))=mod(0:nnz(A)-1,3)+1;
result = cat(3, C==1, C==2, C==3)

More Answers (1)

Matt J
Matt J on 17 Jul 2020
Edited: Matt J on 17 Jul 2020
Let's call your given matrix, A,
[m,n]=size(A);
[I,J]=find(A);
K=repmat((1:3).',1,n);
result=accumarray([I,J,K(:)],true,[m,n,3]);

Categories

Find more on Resizing and Reshaping Matrices in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!