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



>想象一下,我有两个不同大小的矩阵(假设 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];

因为"47"、"12"和"23"是 A 中唯一也存在于 B 中的第一列元素!我已经写了这个,但我收到错误"矩阵维度必须同意"。

TF = A(:,1) ~= B(:,1);    %define indexes in A that A(:,1) is not equal to B(:,1)
A(TF,:) = [];

任何想法如何解决这个问题?

您可以使用 ismember:

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

替换此行

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

用这条线

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

产生所需的结果。

最新更新