Expanding a 2D matrix to 3D

7 visualizzazioni (ultimi 30 giorni)
Camille Woicekowski
Camille Woicekowski il 17 Lug 2020
Modificato: Matt J il 17 Lug 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?

Risposta accettata

Matt J
Matt J il 17 Lug 2020
Modificato: Matt J il 17 Lug 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)

Più risposte (1)

Matt J
Matt J il 17 Lug 2020
Modificato: Matt J il 17 Lug 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]);

Categorie

Scopri di più su Matrices and Arrays in Help Center e File Exchange

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by