Azzera filtri
Azzera filtri

separate matrix into cells according to column value

1 visualizzazione (ultimi 30 giorni)
Hi, I have a matrix like the one I show in A:
A = [1 2 1; 2 2 1; 1 2 2; 2 2 3];
What I intend to achieve in each component of cell B is the first and second column of matrix A whose component index corresponds to the value of the third column of A.
B{1} = [1 2; 2 2];
B{2} = [1 2];
B{3} = [2 2];
I can do it with the next code but I am looking for a better and faster method because i usually have a lot of cell components.
for i = 1 : 3
B{i} = A(A(:,3) == i,1:2);
end

Risposta accettata

Bruno Luong
Bruno Luong il 30 Ago 2020
One liner (not the fatest)
B = splitapply(@(x) {x}, A(:,1:2), A(:,3))

Più risposte (0)

Categorie

Scopri di più su Data Types in Help Center e File Exchange

Prodotti


Release

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by