2012-07-03 55 views
1

我在MATLAB中將一組時間序列導入到一個單元格中,每個時間序列具有不同的維數。該單元格如下所示:如何在MATLAB中重新排列單元格的內容?

datacell = 

[176x1 double] [132x1 double] [129x1 double] [86x1 double] [90x1 double] ...[162x1 double] 

我想重新排列單元格,從最低維到最大,從左到右。單元格中有1000個條目,無法手動執行此操作。我怎樣才能做到這一點?請有人提供一些處理這個問題的想法。

謝謝!

回答

4

簡單:

[~, I] = sort(cellfun(@length, datacell)); 
new_datacell = datacell(I); 
+1

它要快些給'cellfun '字符串''length''而不是函數句柄'@length'。我不確定這是否仍然如此。你可能想嘗試:'[〜,I] = sort(cellfun('length',datacell));'看看是否有任何區別。 – sfstewman

2

哦,看來我是第二個通過一分鐘;)


做這樣的事情:

test_data = {rand(100,1), rand(12,1), rand(200,1), rand(123,1)} 
length_info = cellfun(@length,test_data) 
[a,i_sort] = sort(length_info) 
sorted_data = test_data(i_sort) 
相關問題