Sorting a cell array of strings on dim
    조회 수: 8 (최근 30일)
  
       이전 댓글 표시
    
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
채택된 답변
  Guillaume
      
      
 2015년 12월 17일
        Transpose the cell array, sort, and transpose back:
x = {'book','apple';'dood','tood';'soon','moon'};
sorted_x = sort(x')'
댓글 수: 2
  Guillaume
      
      
 2015년 12월 17일
				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
추가 답변 (1개)
  per isakson
      
      
 2015년 12월 15일
        
      편집: per isakson
      
      
 2015년 12월 18일
  
      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
참고 항목
카테고리
				Help Center 및 File Exchange에서 Shifting and Sorting Matrices에 대해 자세히 알아보기
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


