2014-03-26 3 views
0

2 차원 행렬을 가지고 있습니다. 첫 번째 열은 숫자이고, 두 번째 열은 문자열이고 세 번째 열은 문자열입니다. 첫 번째 열을 기준으로 정렬하고 싶습니다. 다음은 루프를 만드는 데 사용되는 코드입니다.Matlab에서 2 차원 행렬을 정렬하십시오.

감사

for i = 1:length(queries) 
    for j = 1:length(textures) 
     results{i * j, 1} = HI(queries{i, 2}, textures{j, 2}); 
     results{i * j, 2} = textures{j, 3}; 
     results{i * j, 3} = queries{i, 3}; 
    end 

    results = sort(results, 1); 

end 

답변

1

사용 sortrows :

c = {0.608920898437500 'D1.gif' 'D106.gif' 
    0.803334960937500 'D1.gif' 'D109.gif' 
    0.831228027343750 'D1.gif' 'D26.gif'}; %// example data 
cSorted = sortrows(c,1); %// sort rows according to first column 

결과는 그러나 나는 오류를 오류 문자 배열해야합니다 문자 셀 요소를 사용하여 얻을,

cSorted = 
    [0.6089] 'D1.gif' 'D106.gif' 
    [0.8033] 'D1.gif' 'D109.gif' 
    [0.8312] 'D1.gif' 'D26.gif' 
+0

감사입니다 . 정렬 오류> sort_cell_back_to_front (줄 136) tmp = char (x (ndx, k)); sortrows (줄 88)에 오류가 있습니다. ndx = sort_cell_back_to_front (x_sub, col); 주 오류 (줄 68) 결과 = sortrows (결과); –

+0

데이터 유형이 double입니다. 오류의 원인 일 수 있습니까? –

+0

@NickPocock 셀 내용이 문자열 인 경우 오류가 발생하지 않아야합니다. 내 예를 보아라. 아마도 셀 내용이 문자열이 아니겠습니까? –

관련 문제