Running correlations between two matrices

I have two 982x10,000 matrices (matrix A and B). I would like to calculate 60 year running correlations between corresponding columns (e.g. A(1) and B(1), A(2) and B(2), etc.). I can easily do this one at a time using the following code however, I can't find an effective way to apply the running correlation to each successive column.
for i=1:982
z(i,1)=corr(A(i:i+59,1),B(i:i+59,1))
end
I have tried the code below but this produces error messages. What is a good way to do this?
for i=1:982
z(i,:)=corr(A(i:i+59,:),B(i:i+59,:));
end

 採用された回答

Kevin Phung
Kevin Phung 2019 年 1 月 30 日

0 投票

Have you tried adding another forloop for the columns?
for i=1:982
for j = 1:10000
z(i,1)=corr(A(i:i+59,j),B(i:i+59,j))
end
I dont know what corr() returns, so you might have to adjust your z() output.
Also, your row indices are going to go out of bound. for example, at max i = 982,
you will be looking at rows 982:982+59 for your A and b matrices (which do not exist)

その他の回答 (1 件)

Allie
Allie 2019 年 1 月 30 日

0 投票

This worked. Thank you

質問済み:

2019 年 1 月 30 日

回答済み:

2019 年 1 月 30 日

Community Treasure Hunt

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

Start Hunting!

Translated by