Cross Correlation lag issue

Dear Team;
i am conducting cross correlation between two signals using the following code but i am alwyas get the lag at which correlation is max at end of the vector
for example for if both P2 , P1 has length of 100 , lags 2 is 101
i did some preprocessing for the signal such as normalization , remove trend but still results do not change
when i used finddelay function it alyaws give zero
what do you think the issue is?
[xc2,lags2] = xcorr(P2,P3,'coeff');
[rho2,lags2] = max(abs(xc2));

回答 (1 件)

Chunru
Chunru 2022 年 10 月 3 日

0 投票

P2 = randn(10, 1);
P3 = [zeros(5, 1); P2]; % P3 is P2 delayed by 5
[xc2,lags2] = xcorr(P2,P3);
plot(lags2, xc2)
[rho2,imax] = max(abs(xc2))
rho2 = 7.7737
imax = 10
hold on
plot(lags2(imax), xc2(imax), 'r*')

4 件のコメント

Mustafa Al-Nasser
Mustafa Al-Nasser 2022 年 10 月 3 日
Ok but if the signal is shifted by 5 samples while lag is showing 10
Mustafa Al-Nasser
Mustafa Al-Nasser 2022 年 10 月 3 日
I mean why?
Chunru
Chunru 2022 年 10 月 3 日
To know why, you need to show your problem. Your incomplete code can not tell why and we can only show what is right.
Mustafa Al-Nasser
Mustafa Al-Nasser 2022 年 10 月 3 日
Ok now I found the problem and I am find the lag at which cross correlation is max
but actually my problem is that i am dealing with real signal which is very noisy , so, i am looking to use low pass filter or smooth signal to remove the noise but I have a concern that I may lose some useful information

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

製品

リリース

R2021b

質問済み:

2022 年 10 月 3 日

コメント済み:

2022 年 10 月 3 日

Community Treasure Hunt

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

Start Hunting!

Translated by