How could I cut a matrix into subgroups?

How could I cut a matrix into several small groups according to the 1st column, and I don't know how many subgroups I may get and the size of the subgroups are not the same(rows).
Say I have a matrix,
1 23 34
1 2 3
3 45 76
3 5 66
3 2 7
3 23 32
4 2 2
4 5 27
4 1 0 ....
And finally, I would like to get :
1 23 34
1 2 3
and
3 45 76
3 5 66
3 2 7
3 23 32
and
4 2 2
4 5 27
4 1 0
and ...
How could I do that? Thanks in advance!

 Réponse acceptée

Sean de Wolski
Sean de Wolski le 9 Juin 2011
[sz] = histc(X(:,1),unique(X(:,1))); %X is your matrix
C = mat2cell(X,sz,size(X,2)) %each cell will contain one matrix
This is tuned to work assuming column one is sorted if it's not:
X = sortrows(X,1);

Plus de réponses (1)

Matt Fig
Matt Fig le 9 Juin 2011
A = round(rand(10,4));
B = mat2cell(A,[2 3 4 1],[2 2])

Catégories

Community Treasure Hunt

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

Start Hunting!

Translated by