finding most common letter in a bunch of words

1 view (last 30 days)
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

Accepted Answer

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

More Answers (2)

Guillaume
Guillaume on 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 Comments
Max
Max on 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 on 10 Nov 2015
The printing was just for demo. Getting the letter is there right in the code:
letter(maxidx)

Sign in to comment.


Thorsten
Thorsten on 10 Nov 2015
Edited: Thorsten on 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))

Categories

Find more on File Operations in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!