Expanding a 2D matrix to 3D

7 visualizaciones (últimos 30 días)
Camille Woicekowski
Camille Woicekowski el 17 de Jul. de 2020
Editada: Matt J el 17 de Jul. de 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?

Respuesta aceptada

Matt J
Matt J el 17 de Jul. de 2020
Editada: Matt J el 17 de Jul. de 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 comentario
Camille Woicekowski
Camille Woicekowski el 17 de Jul. de 2020
This worked perfectly, thank you!

Iniciar sesión para comentar.

Más respuestas (1)

Matt J
Matt J el 17 de Jul. de 2020
Editada: Matt J el 17 de Jul. de 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]);

Categorías

Más información sobre Matrices and Arrays en Help Center y File Exchange.

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by