如何检查单元格数组中的元素是唯一的还是重复的

时间:2012-12-27 08:43:16

标签: matlab cell-array

我有< 465x1>细胞阵列。为了检查每个元素,我想检查它是唯一的还是重复的元素。

1 个答案:

答案 0 :(得分:5)

为此目的使用unique,它也适用于单元格数组:

[U, ic, iu] = unique(C);

C是您的单元格数组。 U是一个新的单元格数组,其值与C相同,但没有重复。然后,您可以使用histc计算每个值的出现次数:

[U, ic, iu] = unique(C);
count = histc(iu, 1:numel(ic)) 

实施例

为了举例,让我们首先生成一个字符串的随机单元格数组:

strings = {'foo'; 'bar'; 'baz'; 'bang'};
C = strings(ceil(numel(strings) * rand(6, 1)))

这应该产生这样的东西:

C = 
    'bang'
    'baz'
    'foo'
    'bang'
    'bar'
    'foo'

现在我们计算C中每个值的出现次数:

C = strings(ceil(numel(strings) * rand(6, 1)));
[U, ic, iu] = unique(C);
count = histc(iu, 1:numel(ic))

这应该导致:

U =
   'foo'
   'bar'
   'baz'
   'bang'

count =
    2
    1
    1
    2

表示'foo''bang'重复两次,其余只重复一次,这是正确的。
如果您只对真正独特的价值感兴趣,您可以:

U(count == 1)

在我们的示例中应该返回:

'bar'
'baz'

请注意,count中的每个元素代表U中的对应值(不是strings,它们可能有不同的顺序)。