我想簡化我的代碼,因爲它非常耗時。在我的問題,R是一個回合4000,所以corr函數應該要求超過1600萬次。 haw可以簡化這個代碼嗎?如何簡化Matlab中的嵌套循環?
for i=1:R
for j=1:R
Red1 = Red1 + abs(corr (SelectedData,i,j));
end
end
編輯:所以,我應該說,科爾功能是我寫的,它兩個特徵之間的相關性計算。
,這是我科爾功能:
function corr = corr (X, i, j)
covariance = (cov((X(:,i)),(X(:,j))));
corr = (covariance(1,2))/((sqrt(var(X(:,i)))) * (sqrt(var(X(:,j)))));
end
首先,它看起來像你在錯誤的方式使用'correlation'功能:必須包含4個參數(第5個是不必要的)。看看這個[文檔](https://www.mathworks.com/help/antenna/ref/correlation.html?searchHighlight=correlation&s_tid=doc_srchtitle)。 第二:'correlation'不能用於數組類型的'i'和'j',所以我認爲我們可以避免使用一些'arrayfun'或'bsxfun'的循環,但是我們仍然必須使用'correlation'16m次(4000 * 4000)...但我不確定:) –
謝謝你的回覆@Mikhail_Sam;但相關函數是由我寫的函數。我編輯了我的問題。 –
啊,好吧!比我建議你重命名它,以避免覆蓋內置的函數名稱。爲了幫助我們,我們需要看到它的代碼:也許我們可以將一些操作矢量化爲它! –