1. 程式人生 > >matlab執行出現“變數似乎會隨著迭代次數改變而變化,請預分配記憶體,以提高執行速度”問題

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