我有两个不同大小的矩阵,例如:
A = [10 12 15 16 17 43 77];
B = [10 11 15 20 43 55 222 90 86];
我想比较这两个矩阵以找出相同的值并将它们存储在一个新变量中。结果应如下所示:
C = [10 15 43];
由于我是MATLAB的新用户,如果有人给我这个问题的想法会很好。提前致谢。
答案 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值。