我想根据其中一列对单元格数组进行排序。该数组由textscan函数创建。网上有一些答案,但我仍然无法使其正常运行。我有以下数组:
>> DATA
DATA =
{303427x1 cell} {303427x1 cell} {303427x1 cell} {303427x1 cell} [303427x1 uint32] [303427x1 double] [303427x1 uint32] [303427x1 int32] {303427x1 cell}
重要的是第六列,它们是由datenum函数转换的时间。我想通过此列对整个DATA进行排序,但是链接到另一列。 正常排序或排序对我不起作用。你能帮帮我吗?
答案 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);