# Cross correlation Between two matrices row by row

19 ビュー (過去 30 日間)
Flavia Aluisi 2017 年 2 月 23 日

Good morning, I have a problem with the cross correlation (crosscorr command), I'm trying to do a cross correlatation btw 2 matrices with dimension 96*3000, and I wrote this small loop:
[r, c] = size(AinO1_correct);
for i=1:r
[xcf,lags,bounds]=crosscorr(AinO1_correct(i,2) , AinO1_incorrect(:,2));
correlationAinO1 = z';
end
but i got this error 'First series must be a vector.' I don't know what is wrong could please help me?

サインインしてコメントする。

### 採用された回答

Massimo Zanetti 2017 年 2 月 23 日

There are some issues in your code.
1. crosscorr function requires two vector inputs. Ain01_correct(i,2) it is not (it is a number). Notice also that AinO1_incorrect(:,2) is just the second column of your matrix (not a row).
2. correlationAinO1 = z'; what is that???
I assume what you want is:
[r, c] = size(AinO1_correct);
for i=1:r
[xcf,lags,bounds]=crosscorr(AinO1_correct(i,:) , AinO1_incorrect(i,:));
end
notice that arguments of crosscorr function are row vectors from your matrices.
IMPORTANT check the size of the two matrices is the same before running the code.
##### 2 件のコメント表示非表示 1 件の古いコメント
Massimo Zanetti 2017 年 2 月 23 日
This is due to the fact that having not supplied the number of lags, MATLAB uses a default value numLags=20. Then, the output size is 20*2+1, accordingly.
This is explained in the help page of the function crosscorr, read carefully paragraphs related to numLags input and xcf,lags outputs.

サインインしてコメントする。

### Community Treasure Hunt

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

Start Hunting!

Translated by