2015-09-20 54 views
0

我有一张4850626行和三列中的4850626行2425313是重复的表。该表看起来是这样的如何删除matlab中的重复边缘

node1 node2 score 
225  128  0.9 
256  857  0.7 
128  225  0.9 
857  256  0.7 
.  .  . 
.  .  . 

我怎么能删除这个大表的副本?

回答

1

一个非常简单的方法是是这样的:

如果你的矩阵是A,然后Au = unique(A, 'rows');将返回从A内含有唯一行矩阵Au

1

与开始:

A = [ 225 128 0.9 ; 256 857 0.7 ; 128 225 0.9 ; 857 256 0.7 ]; 

然后,如果你订购1和2列,使第一列的最小值,第二列的最大那么你可以使用unique寻找非重复行:

Au = unique ([ min(A(:,[1,2]),[],2) max(A(:,[1,2]),[],2) A(:,3) ], 'rows'); 

Au = unique([ sort(A(:,[1,2]), 2) A(:,3)], 'rows'); 

结果:

128.00000 225.00000  0.90000 
256.00000 857.00000  0.70000