Matrix 倍频程-比较不等矩阵和寻找相等元素

Matrix 倍频程-比较不等矩阵和寻找相等元素,matrix,compare,octave,Matrix,Compare,Octave,我有两个不同维度的矩阵,我想比较第一列中的元素是否匹配(并最终删除匹配的行)。循环只是需要太多的时间,所以我尝试矢量化的版本,但我没有尝试工作。任何帮助都将不胜感激 例如 A=magic(3); B=魔法(6); 最大=最小值(尺寸(A,1),尺寸(B,1)); CommonRows=B(1:UpTo,1)==A(1:UpTo,1); B(CommonRows,:)=[]%B,删除了第1列中相同元素的行 这是我最后一次尝试,几乎成功了,但当两个矩阵中都有重复值时,它就不起作用了 [C,iC]=

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

例如

A=magic(3);
B=魔法(6);
最大=最小值(尺寸(A,1),尺寸(B,1));
CommonRows=B(1:UpTo,1)==A(1:UpTo,1);
B(CommonRows,:)=[]%B,删除了第1列中相同元素的行

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

 [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])

几乎但不完全。。。仅适用于相同维度和按递增顺序排序的索引。如果在前3行中找到匹配项,则返回B,只删除一行。@Tijana Yes!这就是你问的当然,你问的问题可以从很多方面解释,我只是选择了一个我认为你可能是指的问题。你想让你的问题更具体些吗?也许可以添加一个输入示例以及您预期会发生什么(以及您预期不会发生什么)?例如,第一列中的元素是否预期是唯一的?还是你认为他们的立场是一样的?你是对的,我还不够清楚。我想比较两个大小不等的矩阵的第一列中的元素值,以检查是否与某些元素重叠,如果两个矩阵的第一列中都存在元素,那么我将从第一个矩阵中删除一行该元素。顺便说一句,第一列中的元素按升序排序。我可以分离出该列并使用intersect with index命令在这些索引上循环,但我想知道是否有更简单的方法。类似于setdiff(a(:,1),B(:,1))但它返回整行,而不仅仅是唯一的元素。