Correlation with two matrices

7 vues (au cours des 30 derniers jours)
Felicia DE CAPUA
Felicia DE CAPUA le 12 Déc 2022
Commenté : Felicia DE CAPUA le 14 Déc 2022
Hi everyone,
I would like to find the correlation about two matrices the same dimensions. I have two matrices with 64 channles and I need to find the correlation between the first value of first matrix and the first, second, third.... until sixty-four value of second matrix and viceversa.
How can I do this?
Thanks a lot!

Réponses (2)

David Hill
David Hill le 12 Déc 2022
You could just manually do it yourself.
A=randi(100,10);B=randi(100,10);
M=mean(A);N=mean(B);
r=zeros(size(A,2),size(B,2));
for m=1:size(A,2)
for n=1:size(B,2)
r(m,n)=sum((A(:,m)-M(m)).*(B(:,n)-N(n)))/sqrt(sum((A(:,m)-M(m)).^2.*(B(:,n)-N(n)).^2));
end
end
r
r = 10×10
-0.7325 -1.5279 0.5441 -1.1353 1.3671 -1.9351 -1.4018 0.8595 0.3189 0.8992 0.0661 0.1537 0.7952 0.6901 -0.5238 0.0602 -1.4856 1.2302 -0.9858 0.1995 -1.1532 -2.2351 1.1573 1.5280 -0.2541 -0.0752 0.8163 0.5013 -0.5230 -0.5775 0.1300 -0.4017 -0.7430 -0.1586 0.9928 -1.7321 0.4399 -0.2708 -0.7359 -0.3293 -0.8045 -1.8755 1.9652 2.4100 -0.1757 -0.6482 -0.6868 1.0841 0.0492 -1.6882 -0.1862 0.4648 -0.0476 -0.4808 0.2425 -0.5745 -0.6061 1.5960 0.0200 0.6626 -0.8411 -0.0155 0.0680 -0.9309 1.0928 0.8641 -0.5821 0.6830 0.5620 -0.2508 -0.4532 -0.6661 1.2019 1.5538 -0.9566 0.6813 1.0478 -0.1999 1.4598 -1.1943 -0.0501 -0.1554 -0.2710 -0.9457 -0.5791 0.9445 0.1837 0.7055 -0.0926 1.7323 -2.1825 -0.8110 2.0911 1.4211 0.6435 -1.3528 -0.0415 0.1698 2.3680 -1.8121

Bora Eryilmaz
Bora Eryilmaz le 12 Déc 2022
Modifié(e) : Bora Eryilmaz le 12 Déc 2022
You can compute the pairwise correlation between columns of matrices as follows:
% Data matrics with 64 channels (columns)
A = rand(10,64);
B = rand(10,64);
% Vector of pairwise correlation values
C = corr(A,B); % All pairs of columns
C = diag(C) % Matching pairs of columns
C = 64×1
0.1045 0.2102 -0.1445 -0.0380 0.3045 -0.2592 0.2869 -0.5510 0.1050 0.0790
  3 commentaires
Bora Eryilmaz
Bora Eryilmaz le 14 Déc 2022
Modifié(e) : Bora Eryilmaz le 14 Déc 2022
Your code seems unnecessarily complicated. If you already have the matrices L and R, the correlations variable need not be a cell array. Something like this should work:
% Data matrics with 64 channels (columns)
L = rand(100,64);
R = rand(100,64);
% Vector of pairwise correlation values
C = corr(L,R); % All pairs of columns
correlations = diag(C) % Matching pairs of columns
corerlations = 64×1
0.1035 -0.0462 -0.0224 -0.0031 -0.0396 -0.1127 0.0125 -0.0144 0.0199 -0.1041
The second loop that goes over the columns of L and R matrices is not needed since the corr() command already handles that for you, given the whole matrices. Unless of course if your L and R "matrices" have a more complicated structure, like being cell arrays, etc.
Felicia DE CAPUA
Felicia DE CAPUA le 14 Déc 2022
Thanks a lot!

Connectez-vous pour commenter.

Catégories

En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by