2012-07-03 54 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) 
相关问题