计算细胞阵列到细胞阵列Matlab的发生率

时间:2014-03-16 17:18:08

标签: matlab

我有2个字符串单元格阵列,一个是另一个的独特版本。我想计算给定其他单元阵列的唯一单元阵列中每个值的出现次数。我有一个大的单元阵列,所以我想我会尽力找到更快的方法的答案,因为它反对循环...

一个例子:

x = {'the'
 'the'
 'aaa'
 'b'
 'the'
 'c'
 'c'
 'd'
 'aaa'}

y=unique(x)

我正在寻找包含以下内容的任何形式的输出:

'aaa' = 2
'b'   = 1
'c'   = 2
'd'   = 1
'the' = 3

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

一种方法是计算索引unique找到:

[y, ~, idx] = unique(x);
counts = histc(idx, 1:length(y));

给出了

counts =

   2
   1
   2
   1
   3

y的顺序相同。

histc是我计算内容的默认回退,但在这种情况下the function I always forget about可能更好:

counts = accumarray(idx, 1);

应该给出相同的结果,并且可能更有效。