MATLAB Answers

cross-correlation of two signal always shows unexpected 0 lag

62 ビュー (過去 30 日間)
YANAN ZHU
YANAN ZHU 2018 年 11 月 20 日
コメント済み: Honglei Chen 2018 年 11 月 20 日
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).
Image 5.png
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 件のコメント

サインイン to comment.

採用された回答

Honglei Chen
Honglei Chen 2018 年 11 月 20 日
You may want to try
[r,lag] = xcorr(b-mean(b),c-mean(c),'coeff');
HTH

  2 件のコメント

YANAN ZHU
YANAN ZHU 2018 年 11 月 20 日
Thank you so much! It works! Can I know what really happened under the hood after subtracting the mean?
Honglei Chen
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

サインイン to comment.

その他の回答 (0 件)

サインイン してこの質問に回答します。

製品


リリース

R2018a

Translated by