คำถามของฉัน:ฉันสังเกตเห็นว่าคำตอบที่ดีมากมายสำหรับคำถาม Matlab ใน SO มักใช้ฟังก์ชันbsxfunนี้ ทำไม?
แรงจูงใจ:ในเอกสาร Matlab สำหรับbsxfunตัวอย่างต่อไปนี้มีให้:
A = magic(5);
A = bsxfun(@minus, A, mean(A))
แน่นอนเราสามารถดำเนินการเดียวกันโดยใช้:
A = A - (ones(size(A, 1), 1) * mean(A));
และในความเป็นจริงการทดสอบความเร็วอย่างง่ายแสดงให้เห็นว่าวิธีที่สองเร็วขึ้นประมาณ 20% ทำไมต้องใช้วิธีแรก? ฉันคาดเดาว่ามีบางสถานการณ์ที่การใช้bsxfunจะเร็วกว่าวิธีการ "ด้วยตนเอง" มาก ฉันสนใจที่จะเห็นตัวอย่างของสถานการณ์ดังกล่าวและคำอธิบายว่าเหตุใดจึงเร็วกว่า
นอกจากนี้องค์ประกอบสุดท้ายของคำถามนี้อีกครั้งจากเอกสาร Matlab สำหรับbsxfun: "C = bsxfun (fun, A, B) ใช้การดำเนินการไบนารีองค์ประกอบต่อองค์ประกอบที่ระบุโดยฟังก์ชันจับ fun กับอาร์เรย์ A และ B โดยใช้ singleton เปิดใช้งานส่วนขยาย ". วลี "พร้อมเปิดใช้การขยายซิงเกิลตัน" หมายความว่าอย่างไร



tic...tocรอบ ๆ บรรทัดความเร็วของโค้ดจะขึ้นอยู่กับการต้องอ่านฟังก์ชันในหน่วยความจำ