我有一个 <465x1> 单元阵列。为了检查每个元素,我想检查它是唯一的还是重复的元素。
3100 次
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 回答