我有一系列字母
mystring = 'abcdefghijklmnopqrstuvwxyz';
我有Elephant
这个词。我想知道这些字母出现在Elephant
中的次数。我试过了ismember
它给了我它们是否出现但不是多少次。如何获得单词中出现字母的次数?
答案 0 :(得分:3)
您可以使用histcounts
:
mystring = 'bcdfgijkmoqrsuvwxyzelphant';
myword = 'elephant';
[sortstring, idx] = sort(mystring); % Bin edges for histcounts need to be increasing
N = histcounts(double(myword), [double(sortstring) 257]); % Add 257 to the array so we capture the last character in a bin
N(idx) = N; % Undo the sort
返回:
N =
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 1 1 1 1 1 1
答案 1 :(得分:1)
mystring = char(['A':'Z','a':'z']);
Alphabet = zeros(numel(mystring),1);
for ii = 1:numel(mystring)
Alphabet(ii,1) = sum(ismember('Elephant',mystring(ii)));
end
ismember
检查循环所指示的当前字母是否存在于单词中。如果是,则将所有出现次数相加以获得存储在Alphabet
中的每个字母的总出现次数,其中每个条目对应于字母表中该位置的字母。
我使用按@Daniel's comment创建字母的方法;大都会现在有效。
示例,测试William Shakespeare
:
Alphabet.'
ans =
Columns 1 through 15
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Columns 16 through 30
0 0 0 1 0 0 0 1 0 0 0 3 0 0 0
Columns 31 through 45
3 0 0 1 2 0 1 2 1 0 0 1 0 1 1
Columns 46 through 52
0 0 0 0 0 0 0