【问题标题】:Sorting a Cell Array which consists of structures in MATLAB?对由 MATLAB 中的结构组成的元胞数组进行排序?
【发布时间】:2020-11-22 15:05:21
【问题描述】:

你好,希望你一切都好。

现在我正在 MATLAB 上做作业。我有一个单元格数组,它由 6 个结构组成,其中有 6 个字段。元胞数组如下所示:

每个结构也看起来像这样:

我需要根据存储在其中的 totalCost 值对这个元胞数组进行排序。我不知道我是否能够仅通过排序功能来做到这一点。我希望单元格中的每个结构在排序后保持不变。具有最少 totalCost 的结构将成为元胞数组中的第一个元胞,反之亦然。你能帮我解决这个问题吗?

【问题讨论】:

  • 如果您对数据使用结构数组会更好:S = [OPEN{:}]。生成的数据结构在内存方面更高效,但也更容易进行某些操作,如排序。
  • 你绝对是对的。单元格数组中的结构使我很难操作列表。

标签: arrays matlab structure cell-array


【解决方案1】:

也许你可以试试cellfun + getfield + sort 如下所示

[~,I] = sort(cellfun(@(s) getfield(s,"totalCost"), OPEN));
OPENsort = OPEN(I);

【讨论】:

    猜你喜欢
    • 2011-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多