finding most common letter in a bunch of words

4 ビュー (過去 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 ExchangeCreating, 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