查看: 171|回复: 4|关注: 0
打印 上一主题 下一主题

快乐扑克怎么开奖的: [已解决] matlab如何把一个矩阵内的重复行提出来

[复制链接]

新手

7 麦片

财富积分


快乐扑克3如何跟对子 www.vqxik.tw 050


1

主题

2

帖子

0

最佳答案
矩阵A 3000*2大小,这两列分别为X、Y值,其中存在大量X、Y值同时相同的行,如何提出所有重复的行,或者得到指向他们的索引?最开始想的办法是,B=unique(A) ;  [C,ia,ib]=intersect(A,B,'stable');   但关键问题在于unique得到的矩阵中也包含只出现过一次的行,还是没办法实现,请教各位是否有办法解决呢?

之所以想实现这个,是因为处理数据的时候存在多个站点落在一个像元内的情况,X  Y即站点所在像元的像元行列号,共三千个站点(即矩阵有3000行)所以有很多重复,我想要找出“多站点落在同一像元”的所有站点。

入门

90 麦片

财富积分


50500


0

主题

65

帖子

13

最佳答案
  • 关注者: 1
2#
发表于 2019-11-21 22:14:44 | 只看该作者
本帖最后由 hhh619 于 2019-11-21 22:18 编辑

可以试一下用diff求列之间的差分,然后用find查找元素为零的索引。。。:)抱歉,突然发现理解错了问题。。。。。。

MATLAB 基础讨论
版块优秀回答者

入门

166 麦片

财富积分


50500


1

主题

149

帖子

31

最佳答案
  • 关注者: 2
3#
发表于 2019-11-22 08:37:57 | 只看该作者 |此回复为最佳答案
楼主你最初的想法是可以的,思路可以再变通一下~
  1. a = [1 2; 1 3;1 4; 1 2; 1 4;]
  2. [b,~,ib] = unique(a,'rows')
  3. c = b(accumarray(ib,1)>1,:)
复制代码


新手

7 麦片

财富积分


050


1

主题

2

帖子

0

最佳答案
4#
 楼主| 发表于 2019-11-22 15:53:43 | 只看该作者
帕拉代斯 发表于 2019-11-22 08:37
楼主你最初的想法是可以的,思路可以再变通一下~

十分感谢,学到了!能再请教一下,如何返回所有相同行的行号呢?我也想了会很久,intersect  和 ismember得到的只是重复内容出现最后一次的索引,没有返回各自的索引。想使用find函数但是只能find(x==3)这样寻找某个元素,而不能输入(1,3)这种形式。

MATLAB 基础讨论
版块优秀回答者

入门

166 麦片

财富积分


50500


1

主题

149

帖子

31

最佳答案
  • 关注者: 2
5#
发表于 2019-11-22 16:34:04 | 只看该作者
linmoer 发表于 2019-11-22 15:53
十分感谢,学到了!能再请教一下,如何返回所有相同行的行号呢?我也想了会很久,intersect  和 ismember ...

还是这个方法啊,不是都给你写出来了么,怎么把重复的行取出来就怎么把行号取出来啊,行号数据存储在变量ib里,index = ib(accumarray(ib,1)>1,:) 这样不就可以了么
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

快速回复 快乐扑克3如何跟对子 返回列表