想象一下,我有两个不同大小的矩阵(让我们说6x2和5x2)如下:
A = [47 10;
29 10;
23 10;
34 10;
12 10;
64 10];
B = [23 20;
12 20;
54 20
47 20;
31 20];
我需要比较A(:,1)和B(:,1)并删除矩阵A中的行,其第一列元素与矩阵B的第一列元素不同(所以我的焦点仅在矩阵的第一列)。所以我最终应该得到这样的东西:
A = [47 10;
12 10;
23 10];
as" 47"," 12"," 23" A中唯一存在于B中的第一列元素!我写过这个,但是我得到了错误" Matrix尺寸必须同意。"!
TF = A(:,1) ~= B(:,1); %define indexes in A that A(:,1) is not equal to B(:,1)
A(TF,:) = [];
我有什么想法可以解决这个问题吗?
答案 0 :(得分:3)
您可以使用ismember:
result = A(ismember(A(:,1), B(:,1)), :);
答案 1 :(得分:0)
替换此行
TF = A(:,1) ~= B(:,1);
这一行
[~,TF] = setdiff(A(:,1),B(:,1));
产生所需的结果。