我有一个ID编号重复偶数次的向量。我只对每两个数字出现一次感兴趣。我想创建一个 boolean 掩码,该掩码对数字的第二次出现给出true/1。我已经使用循环完成了此操作,但是实际向量将包含数百万个元素,因此循环太慢。我需要一个“向量化”解决方案。
这是一个向量示例:
101
102
103
101
104
102
101
103
101
104
这应该输出以下掩码:
0 (first occurrence of 101)
0 (first occurrence of 102)
0 (first occurrence of 103)
1 (second occurrence of 101)
0 (first occurrence of 104)
1 (second occurrence of 102)
0 (third occurrence of 101)
1 (second occurrence of 103)
1 (fourth occurrence of 101)
1 (second occurrence of 104)
最佳答案
让我们 bsxfun
作为矢量化解决方案-
%// Assuming A as the input vector
M = bsxfun(@eq,A(:),unique(A(:).')) %//'
out = any(M - mod(cumsum(M,1).*M,2),2)
关于Matlab返回向量中每第二次出现的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32591790/