Pertanyaan saya: Saya telah memperhatikan bahwa banyak jawaban bagus untuk pertanyaan Matlab di SO sering menggunakan fungsi tersebut bsxfun
. Mengapa?
Motivasi: Dalam dokumentasi Matlab untuk bsxfun
, contoh berikut diberikan:
A = magic(5);
A = bsxfun(@minus, A, mean(A))
Tentu saja kami dapat melakukan operasi yang sama dengan menggunakan:
A = A - (ones(size(A, 1), 1) * mean(A));
Dan faktanya, uji kecepatan sederhana menunjukkan bahwa metode kedua lebih cepat 20%. Jadi mengapa menggunakan metode pertama? Saya menduga ada beberapa keadaan di mana penggunaan bsxfun
akan jauh lebih cepat daripada pendekatan "manual". Saya akan sangat tertarik untuk melihat contoh dari situasi seperti itu dan penjelasan mengapa lebih cepat.
Juga, satu elemen terakhir untuk pertanyaan ini, lagi-lagi dari dokumentasi Matlab untuk bsxfun
: "C = bsxfun (fun, A, B) menerapkan operasi biner elemen demi elemen yang ditentukan oleh fungsi handle fun ke array A dan B, dengan singleton ekspansi diaktifkan. ". Apa arti frasa "dengan perluasan tunggal diaktifkan"?
tic...toc
sekitar baris, kecepatan kode akan bergantung pada keharusan membaca fungsi ke dalam memori.