基于另一个矩阵的行去除矩阵的行

时间:2018-01-17 04:28:48

标签: matlab find

想象一下,我有两个不同大小的矩阵(让我们说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,:) = [];

我有什么想法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:3)

您可以使用ismember

result = A(ismember(A(:,1), B(:,1)), :);

答案 1 :(得分:0)

替换此行

TF = A(:,1) ~= B(:,1);

这一行

[~,TF] = setdiff(A(:,1),B(:,1));

产生所需的结果。