finding most common letter in a bunch of words

3 次查看(过去 30 天)
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

采纳的回答

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

更多回答(2 个)

Guillaume
Guillaume 2015-11-10
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 个评论
Max
Max 2015-11-10
I dont want to print the value, is it possible to just have most_common_letter='a' as an answer?
Guillaume
Guillaume 2015-11-10
The printing was just for demo. Getting the letter is there right in the code:
letter(maxidx)

请先登录,再进行评论。


Thorsten
Thorsten 2015-11-10
编辑:Thorsten 2015-11-10
x={'abac';'abaca';'abacate';'abacay';'abacinate';'abacination';'abaciscus'};
[h c] = hist(double([x{:}]), double('a':'z'))
[~, idx] = max(h);
char(c(idx))

类别

Help CenterFile Exchange 中查找有关 Creating, Deleting, and Querying Graphics Objects 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by