2

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

4

1 回答 1

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'and'bang'被重复两次,而其余的只重复一次,这是正确的。
如果您只对真正独特的价值观感兴趣,您可以这样做:

U(count == 1)

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

'bar'
'baz'

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

于 2012-12-27T09:01:41.957 回答