how to separate a matrix according to class labels?

11 views (last 30 days)
Hi everybody,
I have a matrix with size of 1500x3. Third column of the this matrix contains the class labes as a numeric like 3,2,1 and size of the each classes is uncertain. I want to divide the main matrix into three different matrices according to these three different classes. Only elements from class 1 will be taken in the first matrix, Only elements from class 2 will be taken in the second matrix, Only elements from class 3 will be taken in the third matrix.

Answers (1)

Guillaume on 7 Mar 2020
classmatrices = splitapply(@(rows) {yourmatrix(rows, :)}, (1:size(yourmatrix, 1)'), yourmatrix(:, 3))
is one way. Note that in matlab it's rarely useful to do this splitting. It's often easier to work on the whole 1500x3 matrix and use aggregation functions such as groupsummary.


Find more on Resizing and Reshaping Matrices in Help Center and File Exchange



Community Treasure Hunt

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

Start Hunting!

Translated by