В Matlab, когда оптимально использовать bsxfun?

Мой вопрос: Я заметил, что многие хорошие ответы на вопросы 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) применяет бинарную операцию элемент за элементом, заданную функцией fun дескриптора, к массивам A и B с включенным одноэлементным расширением.». Что означает фраза «с включенным расширением синглтона»?

Ответы на вопрос(5)

Ваш ответ на вопрос