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
Что здесь происходит:Может кто-нибудь помочь мне векторизовать/ускорить эту петлю Matlab?
- Выполнить через каждые значения в s1. Для каждого значения получите фрагмент для s1 до s1 + windowSize.
- Сделайте то же самое для s2, получите только срез после промежуточной дельта.
- Если в любом из двух фрагментов нет NaN и они не являются плоскими, то получится корреляция между ними и добавьте это в корреляционную матрицу .
Пожалуйста, объясните или удалите 'if (корреляция (i)> 0.85), end' – Daniel
Хорошо, все сделано. Есть ли способ векторизовать это? Извините, я очень новичок в Matlab. –
Что такое 'length (isnan (s1Dat))'? не всегда ли это как 'length (s1Dat)'? что происходит в этом коде ??? – Shai