倍频程-比较不相等的矩阵并找到相等的元素



我有两个不同维度的矩阵,我想比较它们第一列中的任何元素是否匹配(并最终删除匹配的行(。循环只需要太多时间,所以我正在尝试矢量化版本,但我尝试过的都不起作用。任何帮助都将不胜感激!

示例。

A    = magic(3);
B    = magic(6);
UpTo       = min( size( A, 1 ), size( B, 1 ) );
CommonRows = B(1 : UpTo, 1) == A(1 : UpTo, 1);
B( CommonRows, : ) = []   % B with rows of same element in column 1 removed

这是我最后一次尝试,几乎成功了,但当我在两个矩阵中都有重复值时,它就不起作用了。

[C,iC]=setdiff(A(:,1),B(:,1))
[D,iD]=intersect(A(:,1),B(:,1))
newA=A(iC,:)
newBtemp=[A(iD,:);B]
newB=sort(newBtemp)

但我想我现在终于明白了:

common=ismember(A(:,1),B(:,1))
temp=A(common,:)
A(common,:)=[]
newB=sort([temp;B])

相关内容

  • 没有找到相关文章

最新更新