Различные результаты с использованием == и найти в MATLAB - PullRequest
2 голосов
/ 06 июня 2011

Я создал разреженную матрицу, используя MEX, а также создал разреженную матрицу, используя MATLAB. Для заполнения значений матрицы я использовал ту же формулу. Теперь, чтобы проверить, равны ли обе матрицы, я использовал результат = (A == B). результат возвращает 1 для всех индексов, что означает, что все элементы матрицы равны. Но если я найду (A-B), он возвращает некоторые индексы, которые указывают, что при этих индексах значения ненулевые. Как это возможно?

Примечание. Когда я сравниваю значение этих индексов, оно показывается равным!

1 Ответ

5 голосов
/ 06 июня 2011

Я предполагаю, что у вас есть значения бесконечность , возникающие в ваших матрицах в тех же точках. Например:

>> A = Inf;
>> B = Inf;
>> A == B

ans =

     1  %# They are treated as equal...

>> A-B

ans =

   NaN  %# ...but their difference actually results in NaN...

>> find(A-B)

ans =

     1  %# ...which is treated as a non-zero value.

Расхождение здесь обусловлено тем фактом, что некоторые операции с бесконечностью приводят к значениям NaN. Вы можете проверить, есть ли у вас бесконечности в A и B, используя функцию ISINF , например, так:

any(isinf(A(:)))
any(isinf(B(:)))

И если вы получите значение 1 (т. Е. Истина), то, скорее всего, причиной вашего расхождения будет наличие бесконечностей.

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