利用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
结果的确有点出人意料!
如果第一次使用该函数,务必注意,该函数会消融掉重复元素。
推荐阅读
- 最优化问题|改进交叉算子的自适应人工蜂群黏菌算法
- matlab|嵌入均衡池的黏菌优化算法
- 最优化问题|加入领导者的黏菌优化算法
- MATLAB图形界面|基于Matlab的汽车出入库计时计费系统
- Matlab旅程|MATLAB的结构化程序设计
- matlab 内存管理 清理内存
- matlab中使用colormap没有效果
- Matlab|圆柱绕流
- MATLAB|Splart-Allmaras湍流模型及MATLAB编程~
- regionprops统计被标记的区域的面积分布,显示区域总数。