Мой вопрос: Я заметил, что много хороших ответов на вопросы Matlab на SO часто используют функцию bsxfun
. Почему?
Мотивация: В документации Matlab для bsxfun
приведен следующий пример:
A = magic(5);
A = bsxfun(@minus, A, mean(A))
Конечно, мы могли бы выполнить ту же операцию, используя:
A = A - (ones(size(A, 1), 1) * mean(A));
И на самом деле простой тест скорости демонстрирует, что второй метод примерно на 20% быстрее. Так зачем использовать первый метод? Я предполагаю, что есть некоторые обстоятельства, при которых использование bsxfun
будет намного быстрее, чем "ручной" подход. Мне было бы очень интересно увидеть пример такой ситуации и объяснение того, почему это происходит быстрее.
Кроме того, один последний элемент к этому вопросу, опять же из документации Matlab для bsxfun
: "C = bsxfun (fun, A, B) применяет двоичную операцию по элементам, указанную функцией handle fun для массивов A и B, с включенным режимом Singleton.". Что означает выражение "с включенным однотонным расширением"?