Сравниваем элементы в каждой строке матрицы и подсчитываем одинаковые значения - PullRequest
0 голосов
/ 14 мая 2019

У меня есть такая матрица:

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

Я хочу сравнить строки в этой матрице. Если 1-й столбец первой строки совпадает с 1-м столбцом второй строки, увеличьте счетчик. Но если значение равно нулю, счетчик увеличивать не следует.

В приведенном выше примере я ожидаю, что результат будет совпадать = 3 где совпадающие значения 1,3,2, поэтому совпадение = 3

Ответы [ 2 ]

2 голосов
/ 14 мая 2019

Вы можете проверить, равна ли сумма каждого столбца, разделенного на первую строку, 2.

Итак:

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

Поскольку 0/0 не определено, 0 не будет учитываться.

2 голосов
/ 14 мая 2019

Я бы пошел на это:

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

Сравнение Array line(1, :) == line(2, :) даст вам (логическое) 1 в точках, где обе строки имеют одинаковые значения:

ans =
  1  1  0  1  0  0  1

Далее необходимо исключить возможные значения 0.Это можно сделать, найдя ненулевые элементы findind только в первой строке (line(1, :) != 0), а затем с помощью оператора & для результатов.Вы получите:

ans =
  1  1  0  0  0  0  1

Наконец, вам просто нужно сосчитать их, используя sum.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...