Matlab|Matlab setdiff中的陷阱——消除重复元素

利用3σ原则剔除粗差时,想避免matlab程序中数组维数动态变化的情况(因这样会降低计算速度),想用setdiff进行两个集合快速运算,结果出人意料(小陷阱)。
【Matlab|Matlab setdiff中的陷阱——消除重复元素】setdiff——find setdifference of two vectors

c = setdiff(A, B)returns the values in A that are not in B. In set theory terms,

c = A - B. Inputs A and B can be numeric or character vectors or cell arrays of strings.

The resulting vector is sorted in ascending order.

setdiff()函数的说明中,只是说返回集合B中没有但集合A中有的数据。如果集合A中含有重复数据怎么办?这里没有提到,用例子来说明一下。

a=[2 2 2 2 2 2 2 4 5 6 9]; b=[4 5]; c=setdiff(a,b); c=2 6 9

结果的确有点出人意料!
如果第一次使用该函数,务必注意,该函数会消融掉重复元素。




    推荐阅读