2014-03-26 132 views
0

我有一個2d矩陣,第一列是數字,第二列是字符串,第三列是字符串,我想按第一列排序。這是我用來創建循環的代碼。在Matlab中排序2d矩陣

由於

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

謝謝,但是我得到的錯誤使用炭 電池元件必須是字符數組 錯誤。 錯誤in sortrows> sort_cell_back_to_front (line 136) tmp = char(x(ndx,k)); 分選錯誤(第88行) ndx = sort_cell_back_to_front(x_sub, col); 主錯誤(第68行) results = sortrows(results); –

+0

數據類型爲double,是否可能導致錯誤? –

+0

@NickPocock如果你的單元格內容是字符串,你不應該得到那個錯誤。看我的例子。也許你的單元格內容不是字符串? –