如何对包含数组的单元格数组进行排序?

时间:2012-02-06 22:39:57

标签: matlab

我想根据其中一列对单元格数组进行排序。该数组由textscan函数创建。网上有一些答案,但我仍然无法使其正常运行。我有以下数组:

>> DATA

DATA = 

    {303427x1 cell}    {303427x1 cell}    {303427x1 cell}    {303427x1 cell}    [303427x1 uint32]    [303427x1 double]    [303427x1 uint32]    [303427x1 int32]    {303427x1 cell}

重要的是第六列,它们是由datenum函数转换的时间。我想通过此列对整个DATA进行排序,但是链接到另一列。 正常排序或排序对我不起作用。你能帮帮我吗?

2 个答案:

答案 0 :(得分:2)

我认为你要在DATA的每个单元格内进行排序,对吗? datenum函数生成自“零年”以来的串行时间戳,因此可以正常排序。

times = DATA{6};
[~,idx] = sort(times,'ascend');
for i=1:length(DATA)
    DATA{i} = DATA{i}(idx);
end

答案 1 :(得分:1)

在获得排序索引idx后,可以使用CELLFUN避免在@ reve_etrange的答案中使用for循环。

DATA = cellfun(@(x) x(idx), DATA, 'UniformOutput', false);