在比较两个矩阵之后将不同的行分配给另一个矩阵

时间:2014-01-22 05:25:59

标签: matlab matrix indices

我有两个矩阵

R = 10,000x2 Q = 10,000x2

我必须找出q的那些行是一个值或两个值(因为它是一个两列矩阵)不同于r并在另一个矩阵中分配它们,现在我正在尝试这个。我不能使用isequal因为我想知道那些行  不相等的这段代码给了我个别元素而不是完整的行不同 任何人都可以帮忙吗

if r(:,:)~=q(:,:) 
       IN= find(registeredPts(:,:)~=q(:,:))
end

1 个答案:

答案 0 :(得分:1)

您可以使用ismember执行此操作。这是你想要的吗?您可以在此处获得q中与r不同的行中的值。

q=[1,2;3,4;5,6]
r=[1,2;3,5;5,6]

x = q(sum(ismember(q,r),2) < 2,:)
x =
     3     4

这是做什么的: ismember创建一个数组,其中q == r位置为1,其余位置为0。 sum(.., 2)获取每个行的列总和。如果总和小于2,则该行包含在新数组中。

更新

如果值因浮点运算而有所不同,请查看ismemberf from the file exchange.我自己没有测试过,但它看起来不错。