如何比较matlab中的一行

时间:2011-03-15 14:31:04

标签: matlab matrix

我有一个与此类似的矩阵:

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位于其上方。

我该怎么做?

2 个答案:

答案 0 :(得分:3)

假设订单与删除行无关,您可以将SORTUNIQUE组合在一起:

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))]