La mia domanda: ho notato che molte buone risposte alle domande di Matlab su SO utilizzano spesso la funzione bsxfun
. Perché?
Motivazione: Nella documentazione di Matlab per bsxfun
, viene fornito il seguente esempio:
A = magic(5);
A = bsxfun(@minus, A, mean(A))
Ovviamente potremmo fare la stessa operazione usando:
A = A - (ones(size(A, 1), 1) * mean(A));
E in effetti un semplice test di velocità dimostra che il secondo metodo è circa il 20% più veloce. Quindi perché usare il primo metodo? Immagino ci siano alcune circostanze in cui l'utilizzo bsxfun
sarà molto più veloce dell'approccio "manuale". Sarei davvero interessato a vedere un esempio di tale situazione e una spiegazione sul perché sia più veloce.
Inoltre, un ultimo elemento di questa domanda, sempre dalla documentazione di Matlab per bsxfun
: "C = bsxfun (divertimento, A, B) applica l'operazione binaria elemento per elemento specificata dalla funzione handle divertente agli array A e B, con singleton espansione abilitata. ". Cosa significa la frase "con espansione singleton abilitata"?
timeit
funzione nel link che tu / angainor / Dan fornisci.
tic...toc
le righe, la velocità del codice dipenderà dalla necessità di leggere le funzioni in memoria.