Correlation between two matrices with different number of rows and columns

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 Comment

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.

Sign in to comment.

Answers (3)

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.
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 Comment

Instead of imresize i want to use some interpolation technique to solve this!

Sign in to comment.

[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) ;

Categories

Find more on Interpolation in Help Center and File Exchange

Asked:

on 26 Jun 2017

Commented:

on 11 Nov 2020

Community Treasure Hunt

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

Start Hunting!