元胞数组中出现频率最高的字符串,不考虑字母顺序

Most frequent string in cell array without respecting the alphabetical order

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

如果我有这个:

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

我希望答案是 glasses 而不是 apple 因为 glassesapple 在数组中,即使 apple 按字母顺序小于 glasses.

此方法有效,但 returns 苹果:

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

使用'stable' option with unique保持顺序-

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

来自文档:

[C,ia,ic] = unique(A,setOrder) and [C,ia,ic] = unique(A,'rows',setOrder) return C in a specific order. setOrder can be 'sorted' or 'stable':

'stable' — C is in the same order as A.

样本运行-

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