Minha pergunta: notei que muitas respostas boas para as questões do Matlab no SO usam frequentemente a função bsxfun
. Por quê?
Motivação: Na documentação do Matlab para bsxfun
, é fornecido o seguinte exemplo:
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));
De fato, um simples teste de velocidade demonstra que o segundo método é cerca de 20% mais rápido. Então, por que usar o primeiro método? Suponho que há algumas circunstâncias em que o uso bsxfun
será muito mais rápido que a abordagem "manual". Eu estaria realmente interessado em ver um exemplo dessa situação e uma explicação de por que é mais rápido.
Além disso, um elemento final para essa pergunta, novamente da documentação do Matlab para bsxfun
: "C = bsxfun (fun, A, B) aplica a operação binária elemento a elemento especificada pela função handle fun nas matrizes A e B, com singleton expansão ativada. " O que significa a frase "com expansão singleton ativada"?
timeit
função no link que você / angainor / Dan fornece.
tic...toc
contornar as linhas, a velocidade do código dependerá da necessidade de ler as funções na memória.