มันเป็น MATLAB ที่ทำงานช้าในคอมพิวเตอร์ของคุณหรือมากกว่าโปรแกรมที่คุณเขียนใน MATLAB?
MATLAB ใช้การจัดสรรหน่วยความจำแบบไดนามิกขนาดใหญ่และการจัดสรรใหม่ การปรับขนาด MAtrix หรืออาเรย์นั้นช้ามากและไม่สามารถกำหนดค่าได้ หากเมทริกซ์หรืออาร์เรย์โตขึ้นหน่วยความจำใหม่จะถูกจัดสรรและข้อมูลที่มีอยู่จะถูกคัดลอกไปยังหน่วยความจำใหม่ก่อนที่จะลบสำเนาเก่า คุณสามารถหลีกเลี่ยงหน่วยความจำนี้ได้โดยการจัดสรรอาร์เรย์ดังกล่าวล่วงหน้า: ตัวอย่างเช่นรหัสนี้:
x = 0;
for k = 2:1000
x(k) = x(k-1) + 5;
end
สาเหตุที่x
จะถูกปรับขนาดในการทำซ้ำแต่ละครั้งและจะทำงานช้ามาก โดยเปรียบเทียบรหัสต่อไปนี้:
x = zeros(1, 1000);
for k = 2:1000
x(k) = x(k-1) + 5;
end
จัดสรรอาร์เรย์ล่วงหน้าเพื่อไม่ให้เกิดการปรับขนาดและจะทำงานได้เร็วขึ้นมาก
เว็บไซต์ MathWorks มีรายละเอียดทั้งหมดในหน้านี้และเทคนิคการปรับปรุงประสิทธิภาพอื่น ๆ หน้าครอบคลุมต่อไปนี้:
- การจัดสรรล่วงหน้า
- ใช้อาร์เรย์แบบกระจายสำหรับชุดข้อมูลขนาดใหญ่
- เมื่อเป็นไปได้ให้แทนที่ด้วย parfor (Parallel for)
- การ จำกัด ขนาดและความซับซ้อน
- การกำหนดให้กับตัวแปร
- การใช้ตัวดำเนินการทางตรรกะที่เหมาะสม
- ฟังก์ชั่นในตัวมากไป
- ฟังก์ชั่นโดยทั่วไปเร็วกว่าสคริปต์
- โหลดและบันทึกเร็วกว่าฟังก์ชั่นไฟล์ I / O
- Vectorizing ลูป
- หลีกเลี่ยงกระบวนการพื้นหลังขนาดใหญ่
โปรดทราบว่าวิธีการแก้ปัญหาที่คุณแนะนำมีอยู่ในรายการ MathWorks คุณควรพิจารณาประเด็นอื่น ๆ เสียก่อนเว้นแต่คุณจะทำสิ่งที่เห็นได้ชัดว่าทรัพยากรหิวเช่นการใช้งานเครื่องเสมือนหรือเล่นวิดีโอความละเอียดสูงในเวลาเดียวกันกับการเรียกใช้ MATLAB การมองกระบวนการอื่น ๆ ที่กำลังทำงานอยู่นั้นอาจทำให้เหงื่อออกได้