finding most common letter in a bunch of words

1 回表示 (過去 30 日間)
Max
Max 2015 年 11 月 10 日
コメント済み: Guillaume 2015 年 11 月 10 日
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
  1 件のコメント
Max
Max 2015 年 11 月 10 日
thank you so much

サインインしてコメントする。

その他の回答 (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 Center および File ExchangeFile Operations についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by