Sort cell array columns by two dimensions

5 views (last 30 days)
I want to sort the columns of a cell array along the first two rows.
The array has this form (the top row is already sorted):
array = {'A' 'A' 'B' 'B' 'B' 'C' 'C'; ...
1 0.1 1 0.1 0.5 1 0.1; ...
2 3 2 4 5 2 3}
And I would like the output to be in this form:
array = {'A' 'A' 'B' 'B' 'B' 'C' 'C'; ...
0.1 1 0.1 0.5 1 0.1 1; ...
3 2 4 5 2 3 2}
Thanks in advance!

Accepted Answer

Azzi Abdelmalek
Azzi Abdelmalek on 10 Jan 2015
Edited: Azzi Abdelmalek on 10 Jan 2015
array = {'A' 'A' 'B' 'B' 'B' 'C' 'C'
1 0.1 1 0.1 0.5 1 0.1
2 3 2 4 5 2 3}
array=sortrows(array',[1,2])'

More Answers (1)

Star Strider
Star Strider on 10 Jan 2015
This seems to work:
array = {'A' 'A' 'B' 'B' 'B' 'C' 'C'; ...
1 0.1 1 0.1 0.5 1 0.1; ...
2 3 2 4 5 2 3};
B = sortrows(array', [1 2])'
and produces:
B =
'A' 'A' 'B' 'B' 'B' 'C' 'C'
[0.1] [1] [0.1] [0.5] [1] [0.1] [1]
[ 3] [2] [ 4] [ 5] [2] [ 3] [2]

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!