Почему сравнение матриц не оценивается как логическое значение в Octave? - PullRequest
0 голосов
/ 11 ноября 2018

Я новичок в Octave и играю с консолью.

почему при сравнении матриц выражение не оценивается как логическое:

пример:

>> A=[1,2;3,4];     % creating 2x2 matrix
>> 5 == 5           % sample comparison returns true (1)
ans = 1

>> A(1,1) == A(1,1) % single element comparison returns true (1)
ans = 1

>> A == A           % returns 2x2 matrix ???
ans =

  1  1
  1  1

>> size(A == A)     % prove that the above returns 2x2 matrix
ans =

   2   2

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Ответ Сардара верен, но когда дело доходит до времени вычислений, я думаю, что мой альтернативный ответ лучше: вы также можете проверить, что все элементы булевой матрицы A == A равны 1, т. Е. Что сумма 1s в матрице A == A равно количеству элементов A, то есть:

сумма ((A == A) (:)) == цифра (A)

ans = 1

Где оператор (:) просто векторизует матрицу A == A, чтобы ее можно было добавить с помощью sum (). Сравните два ответа, когда ваша матрица достаточно большая, например, определив A = rand (1e4), время вычислений значительно отличается ...

0 голосов
/ 11 ноября 2018

== - для поэлементного сравнения двух матриц. Чтобы проверить, являются ли две матрицы одинаковыми или нет, используйте isequal.

...