MATLAB: Separate matrix into cells according to column value

arrayarrayfuncellcellfunMATLAB

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

Best Answer

One liner (not the fatest)
B = splitapply(@(x) {x}, A(:,1:2), A(:,3))