No Matlab, quando é ideal usar o bsxfun?

Minha pergunta: Tenho notado que muitas das boas respostas às perguntas do Matlab sobre SO freqüentemente usam a funçãobsxfun. Por quê?

Motivação: Na documentação do Matlab parabsxfun, o seguinte exemplo é fornecido:

A = magic(5);
A = bsxfun(@minus, A, mean(A))

Claro que poderíamos fazer a mesma operação usando:

A = A - (ones(size(A, 1), 1) * mean(A));

E, de fato, um teste de velocidade simples demonstra que o segundo método é cerca de 20% mais rápido. Então, por que usar o primeiro método? Eu estou supondo que existem algumas circunstâncias em que o usobsxfun será muito mais rápido que a abordagem "manual". Eu estaria realmente interessado em ver um exemplo de tal situação e uma explicação de porque é mais rápido.

Além disso, um elemento final para esta questão, novamente a partir da documentação do Matlab parabsxfun: "C = bsxfun (fun, A, B) aplica a operação binária de elemento-a-elemento especificada pelo funil de manuseio da função em matrizes A e B, com expansão de singleton ativada.". O que significa a frase "com expansão de singleton habilitado"?

questionAnswers(5)

yourAnswerToTheQuestion