sort an array and store them into subarrays
3 views (last 30 days)
Show older comments
Chong Tao
on 31 Mar 2014
Edited: Azzi Abdelmalek
on 1 Apr 2014
Hi, I have a question regarding sorting arrary and store them into subset. How can I sort an array according to the second column value and store them into subarrays. and get the value of second column. So for an arrary like the following, I would know there are 3 groups(1,2,3) according column 2 and I would get 3 subsets. Thanks a lot.
if true
1 1 9999.69307 3.374E-28
1 1 9999.72441 4.662E-27
1 2 9999.73112 2.083E-29
1 2 9999.93918 4.851E-29
1 1 9999.95707 1.353E-26
1 3 9999.69307 3.374E-28
1 1 9999.72441 4.662E-27
1 2 9999.74112 2.083E-29
1 3 9999.98918 4.851E-29
1 1 9999.99707 1.353E-26 end
0 Comments
Accepted Answer
Azzi Abdelmalek
on 31 Mar 2014
Edited: Azzi Abdelmalek
on 1 Apr 2014
A = [ 1 1 9999.69307 3.374E-28
1 1 9999.72441 4.662E-27
1 9 9999.73112 2.083E-29
1 9 9999.93918 4.851E-29
1 1 9999.95707 1.353E-26
1 3 9999.69307 3.374E-28
1 5 9999.72441 4.662E-27
1 2 9999.74112 2.083E-29
1 3 9999.98918 4.851E-29
1 3 9999.99707 1.353E-26];
B=sortrows(A,2); % Sort A according to second column;
out=accumarray(A(:,2),(1:size(A,1))',[],@(x){A(x,:)})
out(cellfun(@isempty,out))=[]
More Answers (2)
Jos (10584)
on 1 Apr 2014
Shorter, with less overhead and more flexible:
[~,~,j] = unique(A(:,2))
C = accumarray(j,1:numel(j),[max(j) 1],@(k) {A(k,:)})
0 Comments
See Also
Categories
Find more on Shifting and Sorting 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!