matlab運行出現“變量似乎會隨着迭代次數改變而變化,請預分配內存,以提高運行速度”問題


這句話大致意思就是:

b = 0;
for i = 1:3
    a(i) = b;
end
是說變量的長度是變化的,經常在循環里出現,比如上面這個例子,這樣會影響計算速度,最好的辦法是預先定義a的長度,比如
b = 0;
a = zeros(1,3);
for i = 1:3
    a(i) = b;
end

所以,為了減少運行時間,在對特定大小的矩陣進行預分配內存可以實現

 

a(10000,20000) = 0;      %方法一,直接賦值為零  time=0.0021832秒.

a=zeros(10000,20000);   %方法二,用zeros函數,不指定數據類型  time=0.33531秒.

a=zeros(10000,20000,'double'); %方法三,用zeros函數,指定數據類型  time=0.0056734秒.

可以看出,第一種方法直接賦值,第三種方法用zeros函數指定數據類型是比較節約時間的預分配內存的方法。

 

原文:https://blog.csdn.net/xiaozhen_12/article/details/70168978


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM