W Matlab, kiedy optymalne jest używanie bsxfun?
Moje pytanie: Zauważyłem, że wiele dobrych odpowiedzi na pytania Matlaba dotyczące SO często używa tej funkcjibsxfun
. Czemu?
Motywacja: W dokumentacji Matlab dlabsxfun
, podano następujący przykład:
A = magic(5);
A = bsxfun(@minus, A, mean(A))
Oczywiście możemy wykonać tę samą operację przy użyciu:
A = A - (ones(size(A, 1), 1) * mean(A));
W rzeczywistości prosty test prędkości pokazuje, że druga metoda jest o 20% szybsza. Po co więc stosować pierwszą metodę? Zgaduję, że istnieją pewne okoliczności, w których używaszbsxfun
będzie znacznie szybszy niż podejście „ręczne”. Byłbym naprawdę zainteresowany przykładem takiej sytuacji i wyjaśnieniem, dlaczego jest szybszy.
Również jeden ostatni element tego pytania, ponownie z dokumentacji Matlab dlabsxfun
: "C = bsxfun (fun, A, B) stosuje operację binarną element po elemencie określoną przez zabawę z uchwytem funkcji do tablic A i B, z włączonym rozszerzeniem singleton.". Co oznacza wyrażenie „z włączonym rozszerzeniem singleton”?