cross-correlation of two signal always shows unexpected 0 lag
31 次查看(过去 30 天)
显示 更早的评论
Hi,everyone, I got a very strange issue.
b is a signal of 251 samples. c is got by shifting b by 5 sample. (b and c are attached).
But when I do xcorr on b and c, the max correlation always occurs at 0 lag. which I do not understand. Can someone help?
Below is my code. Thank you.
load b.mat
load c.mat
figure;
plot(b);hold on;
plot(c);
[r,lag] = xcorr(b,c,'coeff');
[m, i_max]=max(r);
shift=lag(i_max);
% plot(lag,r);
display(shift);
0 个评论
采纳的回答
Honglei Chen
2018-11-20
You may want to try
[r,lag] = xcorr(b-mean(b),c-mean(c),'coeff');
HTH
2 个评论
Honglei Chen
2018-11-20
Since your goal is to look for similarity between two signals, I think in theory the cross correlation really requires both signal to be zero mean. Otherwise, the DC component will affect your result. For example, let's say two signals are uncorrelated and have all positive values. In theory, the correlation coefficient should be 0. However, without removing the means, the result will always be positive.
HTH
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!