比较矩阵每一行中的元素并计算相似值

时间:2019-05-14 11:00:36

标签: matlab

我有一个像这样的矩阵:

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

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

对于上面的示例,我希望输出匹配= 3 匹配值为1,3,2,所以match = 3

2 个答案:

答案 0 :(得分:2)

我会这样做:

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

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

ans =
  1  1  0  1  0  0  1

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

ans =
  1  1  0  0  0  0  1

最后,您只需要使用sum进行计数即可。

答案 1 :(得分:2)

您可以检查每一列的总和除以第一行是否等于2。

所以:

count = sum(sum(x)./x(1,:)==2)

由于不确定0/0,因此不会考虑0。