如何删除具有相同信息但不同表示的行?

时间:2014-05-11 12:24:07

标签: matlab matrix duplicate-removal

给出

A=1 1   0
1   2   0.563826213141399
1   3   1.18321595677734
1   4   1.95685972913029
2   1   0.563826213141399
2   2   0
2   3   0.830602192143995
2   4   1.65196852337589
2   5   1.77172232586001
3   1   1.18321595677734
3   2   0.830602192143995
3   3   0
3   4   0.821522975656861
3   5   1.12716458303105
3   6   1.78117938413852

如第2行和第5行所示,实际上相同但不在矩阵中。如何删除其中一行? 使用unique我无法做到这一点。

1 个答案:

答案 0 :(得分:0)

您似乎使用加权邻接矩阵表示图形 如果我理解正确,你希望每条边有一个条目。

您可以通过仅采用邻接矩阵的上三角

来完成此操作
A = sparse( A(:,1), A(:,2), A(:,3), max(A(:,2)), max(A(:,2)) );
[ii jj wij] = find( triu( A ) ) ;
disp( [ii jj wij] )   

输出:

1 2 0.563826
1 3 1.183216
2 3 0.830602
1 4 1.956860
2 4 1.651969
3 4 0.821523
2 5 1.771722
3 5 1.127165
3 6 1.781179