matlab矩陣內存預分配
阿新 • • 發佈:2017-08-15
創建 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矩陣內存預分配