MATLAB имеет функцию TABULATE , доступную на панели инструментов статистики:
c = {'c1' 'c2' 'c3' 'c1' 'c2' 'c2' 'c2' 'c1' 'c2'};
t = tabulate(c)
t = t(:,1:2)
Результат:
t =
'c1' [3]
'c2' [5]
'c3' [1]
В качестве альтернативы, вы можете сделать то же самое, используя UNIQUE и ACCUMARRAY функции:
c = {'c1' 'c2' 'c3' 'c1' 'c2' 'c2' 'c2' 'c1' 'c2'};
[classes,~,subs] = unique(c);
counts = accumarray(subs(:),1);
Снова результат, как и раньше:
>> t = [classes(:) num2cell(counts)]
t =
'c1' [3]
'c2' [5]
'c3' [1]
Затем найти строку, которая произошла наиболее, используйте:
>> [~,idx] = max(counts);
>> classes(idx)
ans =
'c2'