Matlab - 按属性对对象元胞数组进行排序

Kie*_*per 5 matlab cell-array

假设我有一个名为 Foo 的类,有一个名为 DateTime 的 datenum 属性。如果我有一个 Foo 对象的元胞数组集合,我将如何根据每个对象的 DateTime 属性对其进行排序?

我已经看到了对重载 sort 方法和使用对象数组的引用,但是由于动态调整大小,我正在使用元胞数组,而这些指令并没有得到支持。有人有什么建议吗?干杯

Jon*_*nas 6

最简单的方法是将时间值提取到一个向量中,对其进行排序,然后使用新的顺序对原始数组进行排序。

%# extract DateTime from the cell array fooCell
dateTime = cellfun(@(x)x.DateTime, fooCell);

[~,sortIdx] = sort(dateTime);

%# reorder fooCell
fooCell = fooCell(sortIdx);
Run Code Online (Sandbox Code Playgroud)