Expanding a 2D matrix to 3D

4 vues (au cours des 30 derniers jours)
Camille Woicekowski
Camille Woicekowski le 17 Juil 2020
Modifié(e) : Matt J le 17 Juil 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?

Réponse acceptée

Matt J
Matt J le 17 Juil 2020
Modifié(e) : Matt J le 17 Juil 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)
  1 commentaire
Camille Woicekowski
Camille Woicekowski le 17 Juil 2020
This worked perfectly, thank you!

Connectez-vous pour commenter.

Plus de réponses (1)

Matt J
Matt J le 17 Juil 2020
Modifié(e) : Matt J le 17 Juil 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]);

Catégories

En savoir plus sur Resizing and Reshaping Matrices dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by