首页 > 解决方案 > 比较矩阵每一行中的元素并计算相似值

问题描述

我有一个这样的矩阵:

 line=[1 3 5 0 0 4 2; 
       1 3 8 0 8 2 2 ] 

我想比较这个矩阵中的行。如果第一行的第一列与第二行的第一列相同,则增加一个计数器。但如果该值为零,则不应增加计数器。

对于上面的示例,我希望输出为 match = 3,其中匹配值为 1,3,2,因此 match = 3

标签: matlab

解决方案


我会这样做:

match = sum((line(1, :) == line(2, :)) & (line(1, :) != 0))

数组比较 将在两行具有相同值的点上line(1, :) == line(2, :)为您提供(逻辑) :1

ans =
  1  1  0  1  0  0  1

接下来,您需要排除可能的0值。这可以通过在第一行 ( ) 中查找非零元素line(1, :) != 0,然后&对结果使用运算符来完成。你会得到:

ans =
  1  1  0  0  0  0  1

最后,您只需计算使用sum.


推荐阅读