Sorting a cell array of strings on dim
7 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Noushin Farnoud
am 15 Dez. 2015
Bearbeitet: per isakson
am 18 Dez. 2015
Hello All,
Is there a way I can sort along the 2nd dim of a cell array of strings? When I apply sort(x,2) on the example below, I receive the error msg: DIM and MODE arguments not supported for cell arrays.
I have:
x={'book','apple';'dood','tood';'soon','moon'}
x =
'book' 'apple'
'dood' 'tood'
'soon' 'moon'
I want to sort it on 2nd dim, so that I get:
sorted_x=
'apple' 'book'
'dood' 'tood'
'moon' 'soon'
I greatly appreciate your response.
Noushin
0 Kommentare
Akzeptierte Antwort
Guillaume
am 17 Dez. 2015
Transpose the cell array, sort, and transpose back:
x = {'book','apple';'dood','tood';'soon','moon'};
sorted_x = sort(x')'
2 Kommentare
Guillaume
am 17 Dez. 2015
A generic version of this:
function sorted_c = sort_cell(c, dim)
%c: an Nd cell array
%dim: dimension to sort
permdims = 1:ndims(c);
permdims([1 dim]) = permdims([dim 1]);
sorted_c = permute(sort(permute(c, permdims)), permdims);
end
Weitere Antworten (1)
per isakson
am 15 Dez. 2015
Bearbeitet: per isakson
am 18 Dez. 2015
2015-12-18: Fixed a "typo". With R2013a.
Loop over all rows and concatenate
cac = arrayfun( @(jj) sort(x(jj,:)), (1:size(x,1)), 'uni', false )
sorted_x = cat( 1, cac{:} )
outputs
cac =
{1x2 cell} {1x2 cell} {1x2 cell}
sorted_x =
'apple' 'book'
'dood' 'tood'
'moon' 'soon'
0 Kommentare
Siehe auch
Kategorien
Mehr zu Shifting and Sorting Matrices finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!