删除重复元素——unique,ismember,setdiff

  在多目标优化优化算法如NSGA2,RVEA等算法中,需要对种群个体进行操作,种群个体经过交叉变异产生的子代有可能会产生重复个体,需要对重复个体进行删除,本文列举几个Matlab函数用于对重复个体进行删除。所列举的例子都是以行为一个实体进行操作。

目录

1:unique:删除矩阵中重复元素

2:ismember:判断数组元素是否为集数组成员

3:setdiff:设置两个数组的差集


1:unique:删除矩阵中重复元素

A=unique(A,'rows')将A中每一行视作一个实体,返回A中唯一行。

A=[1 2 3;4 5 6;1 2 3;5 6 7];
A=unique(A,'rows');

结果

2:ismember:判断数组元素是否为集数组成员

Lia = ismember(A,B,'rows') 将 A 和 B 中的每一行视为一个实体,当 A 中的行也存在于 B 中时,将返回包含逻辑值 1 (true) 的列向量。数组中的其他位置将包含逻辑值 0 (false)

A=[1 2 3;4 5 6];
B=[1 2 3;5 6 7];
index=ismember(A,B,'rows');
C=A(index==0,:)

结果:

 3:setdiff:设置两个数组的差集

C=setdiff(A,B,'rows')将 A 和 B 的每一行都视为单个实体,并返回 A 中存在但 B 中不存在的行,不包括重复项。

A=[1 2 3;4 5 6];
B=[1 2 3;5 6 7];
C=setdiff(A,B,'rows')

结果:

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值