寻找不同大小的矩阵中的共同元素

时间:2016-04-22 08:57:07

标签: matlab set-intersection

我有两个不同大小的矩阵,例如:

A = [10 12 15 16 17 43 77];
B = [10 11 15 20 43 55 222 90 86];

我想比较这两个矩阵以找出相同的值并将它们存储在一个新变量中。结果应如下所示:

C = [10 15 43];

由于我是MATLAB的新用户,如果有人给我这个问题的想法会很好。提前致谢。

2 个答案:

答案 0 :(得分:5)

如果2个数组的大小相同,只需执行:

C = find(A==B);

它找到满足测试A==B的所有元素;该测试是按元素执行的:输出是与输入数组大小相同的掩码,如果A(i)==B(i),则每个元素都为真。

对于非同等大小的数组,解决方案是调用函数intersect

C = intersect(A,B);

它完全符合您的要求,获取A和B中的公共值。请注意,输出值已排序。正如excaza在注释中所述,通过添加选项{{},可以获得与参数(在此示例中为A)中传递的第一个数组中出现的相同顺序的公共值。 1}}来电话:

'stable'

答案 1 :(得分:1)

Bentoy13解决方案的替代方案是使用函数ismember

C = A(ismember(A,B))

它基本上采用B中的A值。