我有一个与此类似的矩阵:
1468 1468
1468 1711
1468 1469
1711 1468
1711 1711
1711 1469
1469 1468
1469 1711
1469 1469
如果条目(j,i)存在,我想删除条目(i,j)。例如,我想删除1711 1468
,因为1468 1711
位于其上方。
我该怎么做?
答案 0 :(得分:3)
假设订单与删除行无关,您可以将SORT和UNIQUE组合在一起:
m = [1468 1468
1468 1711
1468 1469
1711 1468
1711 1711
1711 1469
1469 1468
1469 1711
1469 1469]
[~,v]=unique(sort(m,2),'rows');
trimmedM = m(sort(v),:) %# keep the row ordering as in the original
trimmedM =
1468 1468
1711 1468
1711 1711
1469 1468
1469 1711
1469 1469
请注意,unique
将保留最后一个重复条目,这似乎符合您的要求。
答案 1 :(得分:0)
我认为问题的本质是订单无关紧要。然后,您可以将较小的数字存储在第一列中,并查找重复的行。 This question对此提出了一些建议。该行将执行该类型,因此引用的方法将起作用:
x = [min(x(:,1),x(:,2)),max(x(:,1),x(:,2))]