MATLAB Answers

separate matrix into cells according to column value

1 view (last 30 days)
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

Accepted Answer

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

More Answers (0)

Products


Release

R2020a

Community Treasure Hunt

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

Start Hunting!