我有< 465x1>细胞阵列。为了检查每个元素,我想检查它是唯一的还是重复的元素。
答案 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
,它们可能有不同的顺序)。