我想向量化以下MATLAB代碼。我認爲這一定很簡單,但我覺得它很混亂。向量化矩陣中不同對角線的總和
r = some constant less than m or n
[m,n] = size(C);
S = zeros(m-r,n-r);
for i=1:m-r+1
for j=1:n-r+1
S(i,j) = sum(diag(C(i:i+r-1,j:j+r-1)));
end
end
的代碼計算得分的表,小號,對於動態規劃算法,從另一個得分表,Ç。
對角線求和是針對所有可能的部分(大小爲r)生成用於生成的各個數據片段的分數,所述數據用於生成C。
在此先感謝您的任何答案!很抱歉,如果這一塊應該是顯而易見的......
注意
內置CONV2竟然是比convnfft更快,因爲我的眼睛(R)是相當小的(5 < = R < = 20) 。 convnfft.m指出r應該是> 20以表示任何好處。
太棒了,謝謝。 明天我會看看CONVNFFT。在我用於測試的數據子集(比實際數據大約小500倍)上,與循環相比,內置的conv2函數實現了69,652次調用次數減少和34.56次執行時間減少(23.5 vs 0.68秒)。 – 2010-05-19 12:33:12