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