我将尝试通过一个例子来解释我需要的东西。
假设您有一个矩阵x,如下所示:
1 2 3
4 5 6
另一个矩阵如下:
1 4 5
7 4 8
我需要的是(没有遍历行)以在x和amp;中的每两个相应行之间执行交集。年。所以我希望得到一个矩阵z如下:
1
4
x和y中的第1行只有1作为公共值。第2行有4个作为公共值。
修改 我忘了补充说,在我的情况下,保证交叉点结果的长度相同,实际长度总是1。
答案 0 :(得分:4)
我在想bsxfun
-
y(squeeze(any(bsxfun(@eq,x,permute(y,[1 3 2])),2)))
样品运行 -
运行#1:
>> x
x =
1 2 3
4 5 6
>> y
y =
1 4 5
7 4 8
>> y(squeeze(any(bsxfun(@eq,x,permute(y,[1 3 2])),2)))
ans =
1
4
运行#2:
>> x
x =
3 5 7 9
2 7 9 0
>> y
y =
6 4 3
6 0 2
>> y(squeeze(any(bsxfun(@eq,x,permute(y,[1 3 2])),2)))
ans =
0
3
2
答案 1 :(得分:0)
想法是将矩阵放在一起并在行中查找重复项。找到重复数值的一个想法是[
{ "firstName":"John" , "lastName":"Doe" },
{ "firstName":"Anna" , "lastName":"Smith" },
{ "firstName":"Peter" , "lastName": "Jones" }
]
他们;重复项将在结果中用值0标记。
导致:
diff
这适用于可以水平连接的任意数量的矩阵。它将检测所有重复项,但只有当矩阵中每行只有一个副本时,它才会返回与行数相同的列。