correlation = zeros(length(s1), 1);
sizeNum = 0;
for i = 1 : length(s1) - windowSize - delta
s1Dat = s1(i : i + windowSize);
s2Dat = s2(i + delta : i + delta + windowSize);
if length(find(isnan(s1Dat))) == 0 && length(find(isnan(s2Dat))) == 0
if(var(s1Dat) ~= 0 || var(s2Dat) ~= 0)
sizeNum = sizeNum + 1;
correlation(i) = abs(corr(s1Dat, s2Dat))^2;
end
end
end
這裏發生的事情:通過S1的每個值有人可以幫助我矢量化/加快這個Matlab循環?
- 運行。對於每個值,獲得s1 的分片,直到s1 + windowSize。
- 對s2做同樣的事情,只有在中間變化之後才能得到切片。
- 如果兩個切片中的任何一箇中沒有NaN並且它們不是平的,則 然後獲得它們之間的相關性並將其添加到 相關矩陣。
請解釋或刪除'if(correlation(i)> 0.85),結束' – Daniel
好的,完成了。有什麼方法可以對此進行矢量化嗎?對不起,我對Matlab很新。 –
什麼是'length(isnan(s1Dat))'?是不是總是和'length(s1Dat)'一樣?這段代碼是怎麼回事? – Shai