【问题标题】:Assigning the different row to another matrix after comparing two matrices比较两个矩阵后将不同的行分配给另一个矩阵
【发布时间】:2014-02-12 00:52:37
【问题描述】:

我有两个矩阵

r=10,000x2 q=10,000x2

我必须找出与 r 不同的 q 的那些行,它们是一个值或两个值(因为它是一个两列矩阵),然后将它们分配到另一个矩阵中,现在我正在尝试这个。我不能使用 isequal 因为我想知道那些行 不相等此代码为我提供了单个元素而不是完整的行不同 有人可以帮忙吗

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

【问题讨论】:

  • 你能给出一个小测试用例的输出示例吗?
  • e=[1,2;3,4;5,6], f=[1,2;3,5;5,6] 现在我想存储不同的第 2 行两个矩阵都在另一个矩阵中
  • 是否要存储两行(因为它们不同)?
  • 不,我只想存储与 e 不同的 f 行
  • ismember 把 1 和 1.0000 作为不同的怎么处理?

标签: matlab matrix indices


【解决方案1】:

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

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. 我自己没有测试过,但看起来不错。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-14
    • 1970-01-01
    • 2020-04-16
    • 1970-01-01
    • 2020-10-11
    相关资源
    最近更新 更多