如何与matlab中的行进行比较

发布于 2024-10-21 19:11:25 字数 289 浏览 1 评论 0原文

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

1468    1468

1468    1711

1468    1469

1711    1468

1711    1711

1711    1469

1469    1468

1469    1711

1469    1469

并且我想删除条目 (i,j) iff 条目 (j,i) 存在。例如,我想删除 1711 1468,因为 1468 1711 出现在其上方。

我该怎么做?

I have a matrix similar to this one:

1468    1468

1468    1711

1468    1469

1711    1468

1711    1711

1711    1469

1469    1468

1469    1711

1469    1469

and I would like to remove the entry (i,j) iff the entry (j,i) exists. For example, I would like to remove 1711 1468 as 1468 1711 appears above it.

How do I do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

メ斷腸人バ 2024-10-28 19:11:25

假设删除行的顺序并不重要,您可以组合 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 将保留最后一个重复条目,这似乎符合您的要求。

Assuming that the order doesn't matter for removing rows, you can combine SORT and UNIQUE like this:

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

Note that unique will retain the last of the duplicate entries, which seems to fit with your requirements.

尛丟丟 2024-10-28 19:11:25

我认为根据问题的性质,顺序是无关紧要的。然后您可以将较小的数字存储在第一列中并查找重复的行。 这个问题对此有一些建议。此行将执行该排序,因此引用的方法将起作用:

x = [min(x(:,1),x(:,2)),max(x(:,1),x(:,2))]

I assume by the nature of the problem that order is irrelevant. Then you could just store the smaller number in the first column and look for duplicate rows. This question has some suggestions for that. This line will perform that sort so the referenced methods will work:

x = [min(x(:,1),x(:,2)),max(x(:,1),x(:,2))]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文