【问题标题】:Most frequent string in cell array without respecting the alphabetical order单元格数组中最常见的字符串,不考虑字母顺序
【发布时间】:2017-10-25 04:12:15
【问题描述】:

我想在元胞数组中找到最常见的字符串,但不考虑字母顺序。 让我用一个例子更好地解释一下。

如果我有这个:

list = {'car', 'glasses', 'glasses', 'apple', 'apple'};

我希望答案是 glasses 而不是 apple,因为 glasses 在数组中位于 apple 之前,即使 apple 按字母顺序排列小于 glasses

此方法有效但返回苹果:

[unique_strings, ~, string_map] = unique(list);
mostComm = unique_strings(mode(string_map)); % -> apple

【问题讨论】:

    标签: matlab cell-array mode


    【解决方案1】:

    使用'stable' option with unique保持订单-

    [unique_strings, ~, string_map] = unique(list,'stable');
    unique_strings(mode(string_map))
    

    来自文档:

    [C,ia,ic] = 唯一的(A,setOrder) 和 [C,ia,ic] = unique(A,'rows',setOrder) 按特定顺序返回 C。 setOrder 可以 被“排序”或“稳定”:

    'stable' — C 的顺序与 A 相同。

    示例运行 -

    >> list
    list = 
        'car'    'glasses'    'glasses'    'apple'    'apple'
    >> [unique_strings, ~, string_map] = unique(list,'stable');
    >> unique_strings(mode(string_map))
    ans = 
        'glasses'
    

    【讨论】:

      猜你喜欢
      • 2019-09-30
      • 2021-11-10
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 2011-09-17
      • 2022-01-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多