我有一个 <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 回答