1. 程式人生 > >matlab矩陣內存預分配

matlab矩陣內存預分配

創建 seconds sed ipp 輸出結果 ont atl tracking 通過

matlab矩陣內存預分配就意味著,劃定一個固定的內存塊,各數據可直接按“行、列指數”存放到對應的元素中。若矩陣中不預配置內存。則隨著“行、列指數”的變大。MATLAB就必須不斷地為矩陣找到新的“空的內存”,從而導致“建造矩陣”的速度大大下降。


Hilbert矩陣的數學描寫敘述

Hilbert矩陣是著名的“壞條件”矩陣,當中其第(i,j)元素的表達式是a(i,j)=1/(i+j-1)。


代碼比較:

% 2014-11-8
% Hilbert矩陣的數學描寫敘述

clear 
tic                     %啟動秒表計時
K=1000;
for ii=1:K              %下面創建(K*K)矩陣
    for jj=1:K
    
        A1(ii,jj)=1/(ii+jj-1);
    
    end

end
toc                     %輸出第一種方法耗時


tic 
A2=zeros(K,K);          %給矩陣預先配置內存空間
for ii=1:K
    
    for jj=1:K
    A2(ii,jj)=1/(ii+jj-1);
    end
end
toc                     %另外一種方法耗時

tic 
II = repmat(1:K,K,1);   %在矩陣的每行元素裏設置“列指數”
JJ = II';               %在矩陣的沒列元素裏設置“行指數”
A3 = 1./(II+JJ-1);      %採用數組除。獲得Hilbert矩陣
toc                     %第三中方法耗時

輸出結果:

Elapsed time is 1.903465 seconds.
Elapsed time is 0.010740 seconds.
Elapsed time is 0.037265 seconds.

通過以上分析,可見矩陣內存預分配效果還是非常好的,可是必須指出並非全部的循環都可與量化的。





matlab矩陣內存預分配