Эффективное сравнение двух матриц MATLAB - PullRequest
2 голосов
/ 09 марта 2011

Есть ли способ эффективно сравнить две матрицы, я думал что-то вроде

same = abs((A-B)) = 0...
, вычитая значения одной матрицы в другую, и если их результат равен 0, они одинаковы,также есть функция isequal(), что лучше всего сравнить обе матрицы?

Ответы [ 3 ]

3 голосов
/ 09 марта 2011

Поскольку вы работаете с плавающей запятой, вы, вероятно, не хотите проверять точное равенство (в зависимости от вашего приложения). Таким образом, вы можете просто проверить, что

norm(A - B)

достаточно мало, скажем < 1e-9, опять же, в зависимости от вашего приложения. Это матрица 2-норма, которая будет близка к нулю, если A - B - это матрица всех нулей или почти такая.

3 голосов
/ 09 марта 2011

Вы можете просто сделать isequal(A,B), и он вернет 1, если истина, или 0, если ложь.

2 голосов
/ 09 марта 2011

Кажется, что ISEQUAL быстрее, чем проверка ненулевых элементов после вычитания:

>> a = rand(100, 100);
>> b = a;
>> tic; for ii = 1:100000; any(any(a - b)); end; toc;
Elapsed time is 2.089838 seconds.
>> tic; for ii = 1:100000; isequal(a, b); end; toc;
Elapsed time is 1.201815 seconds.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...