matlab 矩阵去掉重复行

问题背景

          在做多目标离散问题优化算法时,利用多个不同的进化算子产生了重复的解 ,所以有必要记录一下如何去掉重复的解,精简问题规模,尤其时迭代到后期,很多相同的解

解决办法

         

unique(A,'rows',setOrder)

          其中,setOrder 参数有两种取值,默认是’sorted’ 即去掉重复后排序输出(以第一个元素大小位依据),另一个是'stable' 代表去掉重复后按原来顺序输出

         

          常用 unique(A,'row','stable')

示例

>> a=[1 0 1;1 0 1; 1 1 1;2 5 1; 1 1 1;0 1 2 ;0 4 5 ;0 1 2]

a =

     1     0     1
     1     0     1
     1     1     1
     2     5     1
     1     1     1
     0     1     2
     0     4     5
     0     1     2

>> unique(a,'row','stable')

ans =

     1     0     1
     1     1     1
     2     5     1
     0     1     2
     0     4     5

>> unique(a,'row')

ans =

     0     1     2
     0     4     5
     1     0     1
     1     1     1
     2     5     1

>> 

补充

          如果你的这个矩阵还有与之关联的另一个矩阵,比如我的每一个解还对应着他的两个目标值,那你可能还需要返回行的下标,用于处理关联矩阵,如下

[uniqueA row]=unique(A,'row','stable')

          再者,你如果有从去重后的矩阵回复原矩阵的想法,那你可能还需要另一个返回值用于重构原矩阵,如下

[uniqueA row rebuilt]=unique(A,'row','stable')

          不过一般来讲,我们会保留原始举证,不太会把他丢掉,直接用去重覆盖的方式也比较少见。

  • 6
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

中南自动化学院至渝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值