1. 程式人生 > >matlab運行出現“變量似乎會隨著叠代次數改變而變化,請預分配內存,以提高運行速度”問題

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

實現 targe left 賦值 矩陣 意思 nbsp 三種 detail

這句話大致意思就是:

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

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