2017-04-11 87 views
1

我有一個數組(從excel文件)像這樣;Matlab數組排序

原料=

':Gamer Name' 'mail'     'true' 'false' 'Date'    
'Haydar'   [     1] [2] [3] [     5] 
'Çınar'   [     3] [4] [1] [     6] 
'Ali'   [     2] [5] [2] [     3] 
' Oyuncu'  [     NaN] [0] [3] [     NaN] 
' Oyuncu'  [     NaN] [0] [3] [     NaN] 
' Oyuncu'  [     NaN] [0] [3] '11-Apr-2017 19:17:10' 
' Haydar'  'haydarc'     [0] [3] '11-Apr-2017 19:22:14' 
[  NaN] [     NaN] [0] [3] '11-Apr-2017 19:24:40' 
[  NaN] [     NaN] [3] [0] '11-Apr-2017 19:27:45' 
' Haydar'  '[email protected]…' [3] [0] '11-Apr-2017 20:02:04' 

我想 '真' 排序。我怎樣才能做到這一點 ? 由於

回答

4

可以基於第三列的單元陣列(即true)提取出的索引通過sort排序的,那麼重新排列單元陣列的基礎上的行。使用第二個輸出sort來幫助你做到這一點。

但是,您的第一行由字符組成。什麼你需要做的是拉出來的第一行,排序上的數字,然後重建排序單元陣列把這個第一行回:

raws = raw(2:end, :); 
[~,ind] = sort(cell2mat(raws(:, 3)); 
raw_sorted = [raw(1,:); raws(ind, :)); 

功能cell2mat幫助轉換您的細胞列在true列是一個矩陣,所以我們可以成功使用sort。一旦我們找到排序索引,只需在第一行沒有索引到您的單元格數組中,但請確保將第一行放回。

+1

謝謝先生。我試圖現在排序1小時。但我不能。我很感謝你:) – statistic

+0

@haydarçınar沒有任何問題:)祝你好運! – rayryeng

+0

您也可以將這些數據打包到一個表格中,而不是單元格數組,然後調用'sortrows'。 – CKT