如何在matlab中计算字符或唯一字符串

时间:2015-02-25 11:27:16

标签: arrays matlab count

那怎么算不了。重复字母出现在某个数组>

例如我有一个数组

a
a
a
c
b
c
c
d
a

我怎么知道a,b,c怎么可能发生?我想要这样的输出:

Alphabet   count
a           4
c           3
b           1
d           1

那我怎么能这样做?谢谢

1 个答案:

答案 0 :(得分:3)

arr = {'a' 'a' 'a' 'c' 'b' 'c' 'c' 'd' 'a'}

%// map letters with numbers and count them
count = hist(cellfun(@(x) x - 96,arr))

%// filter result and convert to cell
countCell = num2cell(count(find(count)).') %'

%// get sorted list of unique letters 
letters = unique(arr).' %'

%// output
outpur = [letters countCell]

duplicate answer中的解决方案非常简洁,适用于您想要的输出:

[letters,~,subs] = unique(arr)
countCell = num2cell(accumarray(subs(:),1,[],@sum))
output = [letters.' countCell]

在我看来,您的输入数组看起来像:

arr = ['a'; 'a'; 'a'; 'c'; 'b'; 'c'; 'c'; 'd'; 'a']

所以将最后一行改为:

output = [cellstr(letters) countCell]

output = 

    'a'    [4]
    'b'    [1]
    'c'    [3]
    'd'    [1]