correlation for multi-dimensional arrays

조회 수: 40 (최근 30일)
Niko
Niko 2011년 9월 14일
답변: Mustapha Adamu 2018년 12월 10일
Hi everyone,
I need to compute correlation coefficients - lots of them. I have two three-dimensional arrays (frequency x time x observations) and I want to compute correlations between the two arrays along the third dimension. The result I need is a two-dimensional array of correlation coefficients (frequency x time). If I understand the corr function correctly, corr is only for column vectors. If I loop over my other two dimensions, I can of course compute the correlation for each time-frequency point separately, but this is very slow.
Is there a way to compute correlation coefficients for multi-dimensional arrays along an arbitrary dimension, or any other way to speed up the computation of correlations?
Thanks!
  댓글 수: 1
Raj
Raj 2014년 8월 27일
Can you please provide formulas (math models) for the multi-dimensional correlation?

댓글을 달려면 로그인하십시오.

채택된 답변

David Young
David Young 2011년 9월 15일
If you don't have NaNs in the data, and you want the standard Pearson coefficient, then you could try applying the formula for correlation directly, like this:
% Synthetic data for testing
a = rand(10, 10, 100);
b = rand(10, 10, 100);
b(1, 1, :) = 3 * a(1, 1, :) - 2; % r(1,1) should be + 1;
b(1, 2, :) = -17 * a(1, 2, :) + 8; % r(1,2) should be - 1;
% rest of r should be random between +1 and -1
% Compute correlations on third dimension
% Remove means
az = bsxfun(@minus, a, mean(a,3));
bz = bsxfun(@minus, b, mean(b,3));
% Standard Pearson correlation coefficient formula
a2 = az .^ 2;
b2 = bz .^ 2;
ab = az .* bz;
r = sum(ab, 3) ./ sqrt(sum(a2, 3) .* sum(b2, 3));
  댓글 수: 2
Niko
Niko 2011년 9월 15일
Thank you so much David! Works like a charm and runs in no time.
André Gadêlha
André Gadêlha 2017년 10월 10일
Dear David Young,
.
Why did you use this formulas to calculate the correlation:
.
b(1, 1, :) = 3 * a(1, 1, :) - 2; % r(1,1) should be + 1;
b(1, 2, :) = -17 * a(1, 2, :) + 8; % r(1,2) should be - 1;
.
and why did you removed means?
.
Best Regards!

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Mustapha Adamu
Mustapha Adamu 2018년 12월 10일
Dear David,
How do you go about this if you have nans,
Kind regards;
mustapha

카테고리

Help CenterFile Exchange에서 Descriptive Statistics에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by