每个矩阵中有两列的交集

Intersection with two columns in each matrix

我想找到两个矩阵中两列的交集(请参见下面的示例)。所以要找到 A 和 B 相交的位置——在本例中是位置 3 和 5。

到目前为止,我的解决方案是将两列合并为一列,然后在一列上使用字符串使用 intersect 函数。有没有更优雅的解决方案?

A = [1,1;1,3;1,4;2,1;2,5;3,1]

一个=

 1     1
 1     3
 1     4
 2     1
 2     5
 3     1

B = [2,5;1,4]

乙=

 2     5
 1     4

您可以避免合并列。使用相交时,您可以使用 rows 选项。

A = [1,1;1,3;1,4;2,1;2,5;3,1]
B = [2,5;1,4]
[C,ia,ib] = intersect(B,A,'rows');

>>ib
     3
     5

此外,如果您不想对交集结果进行排序,您可以使用 stable 选项。

 [C,ia,ib] = intersect(B,A,'rows','stable');
 >>ib
     5
     3