解決Matlab當中for迴圈執行慢的問題

2022-02-06 07:20:06 字數 1530 閱讀 6590

做量化操作的時候經常需要使用到matlab編寫策略或者計算多因子,for迴圈非常慢,自己找了一些matlab中for迴圈的優化方法,for的部分每處理乙個大矩陣都要花費大量的時間,這是不可避免需要遇到的問題~。

方法1:迴圈多不要緊,要緊的是迴圈巢狀得太多,要解決這個問題,需要從根本上找原因,用更好的資料結構和演算法,從根源上減少對於迴圈的需求

方法2:將迴圈次數多的放在裡面,迴圈次數少的放在外面做大迴圈

方法3:for迴圈中少用if——else if判斷,用switch——case,效率更高

方法4:多執行緒併發替代單迴圈麼,盡可能利用cpu,比如用並行的parfor

1

for(int i = 0; i < 100; ++i)

2

優化:

1

for(int i = 0; i < 25; i += 4

) 2

減少迴圈次數,而且還能意外增加指令級的並行運算機率,其次,用多執行緒,最簡單的就是openmp。要是對資料的處理,就用sse指令什麼的。

這樣下來。整個程式不不止快那麼一點點

方法5:結合具體的迴圈,利用時間和空間的相互轉換,也就是用空間換時間

方法6:vectorization(向量化)處理後,例如通過對for迴圈的向量化,效率也有很大提高。

向量化實際上就是矩陣化,利用點運算代替for迴圈,利用matlab軟體強大的矩陣運算能力優化程式

1 sum1=0;2

for i=1:100

3for j=1:100

4for k=1:100

5 d=i.^2+j.^2+k.^2

;6 sum1=sum1+d;

7end

8end

9 end

向量化之後

1 i=1:100;j=1:100;k=1:100

;2 sum1=sum(i.^2+j.^2+k.^2);

方法7:最基本的方面,別在視窗中顯示矩陣,每條語句的結尾加分號

方法8:找一台效能好的電腦,用伺服器跑那就更好了!

ps:下面是乙個測試,來區分優化前和優化後的時間效率問題,讀取mxm的矩陣。利用上述所提到的優化方式進行優化(具體怎麼優化,還是根據實際情況進行優化,這裡不做說明),如圖所示:

你知道js當中for迴圈當中的bug嗎,如何解決它

本來以為for迴圈可以很好的解決一切問題,直到今天遇到了這段 重新整理了我對for迴圈的認識,話不多說,直接上 var arr for var i 0 i 10 i arr 3 大家看上面這段 我先宣告了乙個空陣列,然後把它放在迴圈裡面,迴圈新增函式作為arr陣列的資料,第一印象看到的時候,肯定不少...

Matlab之for迴圈語句

for迴圈允許一組命令以固定的和預定的次數重複。for迴圈的一般形式是 for 變數 矩陣 表示式 end在for和end語句之間的表示式按陣列中的每一列執行一次。在每一次迭代中,x被指定為陣列的下一列,即在第n次迴圈中,x array n n 0 1 10 y n for i 1 11 y i s...

Matlab的迴圈語法

1 用迴圈方式實現從1到999的累加 2 1 for迴圈方式實現 初始化sum的值為0 sum 0 從1開始遍歷到999 for i 1 999 對遍歷的每乙個元素進行累加 sum sum i end 在控制台顯示結果 2 while迴圈實現 初始化sum1的值為0 sum1 0 初始化開始遍歷的值...