How to compute sliding or running window correlation coefficient?
Show older comments
Dear colleagues,
I want to compute the sliding or running window correlation coefficient. I have read related papers, the formula is as following:


t=n,n+1,n+2,n+3,......。 n means the length of silding or running window.
Could you translate this formula into Matlad codes? Any help is very much appreciated! Many many thanks!
2 Comments
Thomas Koelen
on 3 Apr 2015
Have a look at this mfile:
Roger Stafford
on 3 Apr 2015
See my reply at your previous thread:
http://www.mathworks.com/matlabcentral/answers/195874
Answers (2)
For a fast computation you can implement moving sums of X and X^2 for both signals, then obtain moving averages and variances as
M = sum(X)/windowLen;
V = ( sum(X^2) - sum(X)^2 )/windowLen;
Then find sum
V12 = sum( (X1-M1)*(X2-M2) );
And then sliding correlation itself:
C = V12 / sqrt(V1*V2);
It can be done efficiently within one for loop by adding one new value and substacting the old one.
*The same way we can find statistical moments, by adding moving sums of higher powers - X^3, X^4 etc.
**Additionally, you can add any span value for integer decimation.
David J. Mack
on 21 Dec 2017
0 votes
If someone encounters this problem, I have written a function in analogy to the MOVSUM function, which compute the moving Pearson correlation:
Greetings, David
Categories
Find more on Correlation and Convolution in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!