matlab 矩陣代替for循環

衆所周知,Matlab的矩陣操作給運算帶來極大的方便。但有時候遇到一些問題,第一時間想到的解決方案是for循環,但說實話,對於某些大的程序,for循環消耗的資源太大;即使有時候for循環能解決問題,對於完美主義者,還是想精簡再精簡。遇到這個時候,轉換思維方式,往往用變換矩陣的方式就能解決問題。

最近也是在探索總結中,此處舉一簡單例子。

Matla中定義圖像特徵的非相似度,如下公式所示:


傳統方案:for循環

sum = 0;
for i =1:Ng
    for j =1:Ng
         sum = sum +abs(i-j).*P(i,j)
    end
end

更精簡的方案:矩陣變換
Matrix_i = repmat([1:Ng]',1,Ng);
Matrix_j = repmat([1:Ng],Ng,1);
Sub = abs(Matrix_i - Matrix_j);
Dissi = sum(sum(Sub.*P));


此處先做簡答總結,以後遇到更多例子再補充。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章