Cross Correlation
18 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Wayne King
2011-10-16
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 个评论
Wayne King
2011-10-16
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.
更多回答(1 个)
Wayne King
2011-10-16
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 个评论
Wayne King
2011-10-16
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.
另请参阅
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!