transforming a 2-dim array integers to 3-dim array of logical which are true for the corresponding number - without using a loop
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
Hello,
I would like to take an 2-dim array like
IND=[4 3 2;
1 2 3];
and create a 3-dim of logicals like
GOAL(:,:,1)=[0 0 0 1;
1 0 0 0]
GOAL(:,:,2)=[0 0 1 0;
0 1 0 0]
GOAL(:,:,3)=[0 1 0 0;
0 0 1 0]
So the first second dimension is newly created, it is as long as the highest number in IND and is zero(false), except for the indice, that is 1(true)
I really need it to be fast, so a for loop will not do.
Many thanks Marcus
2 Commenti
Risposta accettata
Bruno Luong
il 22 Ott 2018
Modificato: Bruno Luong
il 22 Ott 2018
IND=[4 3 2;
1 2 3];
[I,~,K] = ndgrid(1:size(IND,1),1,1:size(IND,2));
J = IND;
GOAL = accumarray([I(:),J(:),K(:)],1);
3 Commenti
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!