How to compute sliding or running window correlation coefficient?

63 ビュー (過去 30 日間)
Kathleen
Kathleen 2015 年 4 月 3 日
回答済み: David J. Mack 2017 年 12 月 21 日
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 件のコメント
Roger Stafford
Roger Stafford 2015 年 4 月 3 日
See my reply at your previous thread:
http://www.mathworks.com/matlabcentral/answers/195874

サインインしてコメントする。

回答 (2 件)

Victor
Victor 2016 年 9 月 6 日
編集済み: Victor 2016 年 9 月 6 日
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
David J. Mack 2017 年 12 月 21 日
If someone encounters this problem, I have written a function in analogy to the MOVSUM function, which compute the moving Pearson correlation:
Greetings, David

カテゴリ

Help Center および File ExchangeCorrelation and Convolution についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by