# How do I compute the correlation between corresponding rows of two matrices?

조회 수: 74(최근 30일)
Michael Wolf 2018년 5월 11일
댓글: Michael Wolf 2018년 5월 11일
I have two matrices, X and Y, which each have 60 columns and 10,000 rows.
I would like to create a vector R, such that the nth value of vector R represents the correlation between row n of matrix X and row n of matrix Y.
I have tried:
[R,pval] = corr(X',Y');
but this gives me R as a 10,000-by-10,000 matrix.
What am I doing wrong?

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

### 채택된 답변

possibility 2018년 5월 11일
X is 10,000-by-60 Y is 10,000-by-60
X' is 60-by-10,000 Y' is 60-by-10,000
By correlating these two matrices, i.e. R=corr(X', Y'), you get the 10,000-by-10,000 R matrix whose elements are the pairwise correlation of each column of X' and Y', that is each row of X and Y.
So, you are doing the right thing! Just check the diagonals of that matrix:
>> Rvec= diag (R)
##### 댓글 수: 1표시숨기기 없음
Michael Wolf 2018년 5월 11일
diag (R) gave me a vector of 10000 elements that seem to represent correlations for each row of the input matrices.
Here is an added challenge: I attempted to apply this technique to a larger pair of matrices (also 60 rows, but ~60000 columns instead of 10000)--and the code would not run because the R matrix (around 60000-by-60000 in size) exceeded Matlab's size limit. Is there a way around this?

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

### 추가 답변(2개)

Von Duesenberg 2018년 5월 11일
arrayfun(@(k) corr(A(k,:)', B(k,:)'), 1:10000, 'Uni', 1)
##### 댓글 수: 0표시숨기기 이전 댓글 수: -1

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

Shounak Shastri 2018년 5월 11일
From what I know, Correlation Matrices are usually square. As in you have 10000 rows with 60 elements in each row. So if you take 1 row of dimension 1 x 60, the dimension of your corr matrix would be 60 x 60.
But in your example, you took a transpose. So, now the size of each row is 1 x 10000. And thus when you perform correlation on the rows, you would get a 10000 x 10000 matrix.
##### 댓글 수: 1표시숨기기 없음
Michael Wolf 2018년 5월 11일
Thanks! I was looking for the correlation coefficient between each pair of rows. Apparently, taking the diagonal of this correlation matrix gives me that.

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

### 범주

Find more on Correlation and Convolution in Help Center and File Exchange

### Community Treasure Hunt

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

Start Hunting!

Translated by