Cross Correlation
5 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
What does the function xcorr(x,y) actually do? Is it just a multiplication of Xm+n and Yn ? If so, why does the result matrix have 2N-1 elements while X & Y have N elements? How do I conclude if there is correlation among X & Y from the result? Thanks
0 Kommentare
Akzeptierte Antwort
Wayne King
am 16 Okt. 2011
xcorr computes the cross correlation sequence which is attained by shifting one sequence with respect to the other, complex conjugating it, taking the element by element product, and summing the result.
You typically want to compute the cross correlation sequence when you want to compute the "correlation" between a time series and shifted versions of another series.
For example, the following shows that y is a delayed version of x and the delay is 5 samples.
rng default;
x = randn(10,1);
y = [zeros(5,1); x];
[C,lags] = xcorr(y,x);
stem(lags,C);
Perhaps what you want is corrcoef() to compute the correlation between two random vectors?
2 Kommentare
Wayne King
am 16 Okt. 2011
By the way, by default xcorr computes the cross correlation at 2*N-1 lags. If x and y are both length 3 for example, the lags run from:
-2,-1,0,1,2. You can specify the maxlag to be something less than that. See the help.
Weitere Antworten (1)
Wayne King
am 16 Okt. 2011
velocity with a shifted velocity will definitely work with xcorr. Since acceleration is the derivative of velocity, if you have acceleration with a delay, you'll have to get the derivative of the velocity vector first to use xcorr().
2 Kommentare
Wayne King
am 16 Okt. 2011
If they are the same length, then you can use the 'coeff' option and you will have a cross correlation that ranges from [-1, 1]. You can look at the lag at which the largest correlation coefficient occurs and what it's value is.
Siehe auch
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!