finding most common letter in a bunch of words

1 vue (au cours des 30 derniers jours)
Max
Max le 10 Nov 2015
Commenté : Guillaume le 10 Nov 2015
say I have a bunch of words
x={'abac';'abaca';'abacate';'abacay';'abacinate';'abacination';'abaciscus'}
What would I write to find the most common letter in x so for example Most_common_letter=%most common letter that appears in x

Réponse acceptée

Stephen23
Stephen23 le 10 Nov 2015
Modifié(e) : Stephen23 le 10 Nov 2015
It is easy using mode:
>> x={'abac';'abaca';'abacate';'abacay';'abacinate';'abacination';'abaciscus'};
>> char(mode(+[x{:}]))
ans = a

Plus de réponses (2)

Guillaume
Guillaume le 10 Nov 2015
Two steps are required:
  1. build the histogram of the letters, however you want (using accumarray, histc or histcounts)
  2. find the max of the histogram
x = {'abac';'abaca';'abacate';'abacay';'abacinate';'abacination';'abaciscus'};
[letter, ~, pos] = unique([x{:}]);
letterhist = accumarray(pos, 1); %letter histogram
[~, maxidx] = max(letterhist);
fprintf('the most frequent letter is: %c\n', letter(maxidx));
  2 commentaires
Max
Max le 10 Nov 2015
I dont want to print the value, is it possible to just have most_common_letter='a' as an answer?
Guillaume
Guillaume le 10 Nov 2015
The printing was just for demo. Getting the letter is there right in the code:
letter(maxidx)

Connectez-vous pour commenter.


Thorsten
Thorsten le 10 Nov 2015
Modifié(e) : Thorsten le 10 Nov 2015
x={'abac';'abaca';'abacate';'abacay';'abacinate';'abacination';'abaciscus'};
[h c] = hist(double([x{:}]), double('a':'z'))
[~, idx] = max(h);
char(c(idx))

Catégories

En savoir plus sur File Operations dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by