Correlation between two matrices with different number of rows and columns

9 vues (au cours des 30 derniers jours)
Sophia
Sophia le 26 Juin 2017
Commenté : Zsófia Jólesz le 11 Nov 2020
I have two matrices of different sizes. I want to calculate the spatial correlation between the two matrices but the matrices are of different sizes. Let's say matrix A of 119*177 size represent the ice drift and matrix B of size 760 *1120, But both data represent the same area at different spatial resolution. What is the best way to calculate the spatial correlation between the two.
  1 commentaire
Zsófia Jólesz
Zsófia Jólesz le 11 Nov 2020
I know it's been a while since you asked this, but is anyone here who knows how to make a C program for this? I think I have the program to calculate the correlation between two matrices with the same size, I just don't know how to overwrite this program to be able to count the corr. between different sized matrices.

Connectez-vous pour commenter.

Réponses (3)

ANKUR KUMAR
ANKUR KUMAR le 29 Oct 2017
Modifié(e) : ANKUR KUMAR le 29 Oct 2017
Try interpolating it in between point to make them into the same dimension. 119*177 size represent the ice drift and matrix B of size 760 *1120 For example. try making your A matrix into the dimension of 760 * 1120. A having dimension 119*177. For the simplicity, lets say U*V
U1=linspace(min(U),max(U),760);
V1=linspace(min(U),max(V),1120);
Not interpolate these two new sets with the previous one. Example
A1=interp2(U,V,A,U1,V1)
It gives the output A1 having dimension 760*1120. Now you can easily use
corr2(A1,B)
It works, because both have the same dimension.

KSSV
KSSV le 27 Juin 2017
A = rand(119,177) ;
B = rand(760,1120) ;
%%Resize the matrices
% resize B to size of A
B = imresize(B,size(A)) ;
% Get corellation
r = corr2(A,B) ;
  1 commentaire
Sophia
Sophia le 5 Juil 2017
Instead of imresize i want to use some interpolation technique to solve this!

Connectez-vous pour commenter.


Andrei Bobrov
Andrei Bobrov le 5 Juil 2017
[m,n] = size(A);
[m1,n1] = size(B);
GI = griddedInterpolant({(1:m)',1:n},A);
AasB = GI({linspace(1,m,m1)',linspace(1,n,n1)});
r = corr2(B,AasB) ;

Community Treasure Hunt

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

Start Hunting!

Translated by