Why is xcorr getting this very simple case "wrong"?
5 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Mitch Hezel
el 11 de Feb. de 2021
Comentada: the cyclist
el 12 de Sept. de 2021
I'm sure it's just me, but I have
a = [1 2 3 4 5 4 3 2 1];
b = [0 1 2 3 4 5 4 3 2];
[c,lags] = xcorr(detrend(a,0), detrend(b,0), 'normalized');
Then i try
lags(c == max(c))
%ans 0
Why doesn't xcorr believe the lag should be 1 sample?
0 comentarios
Respuesta aceptada
the cyclist
el 12 de Feb. de 2021
I didn't figure this out with certainty, but if you take a look at the "More About" section of the documentation for xcorr, it mentions that xcorr can only approximate the true cross-correlation if an infinite-length signal, due to the finite length of the input vector. So, I think what is happening is that the end effects are overwhelming the "true" lag result.
I confirmed this by using
a = repmat(a,5,1);
b = repmat(b,5,1);
to get more extended signal, and you do see the lag=-1 dominate.
FYI, using
stem(lags,c)
is a good way to visualize the results.
2 comentarios
Adib Yusof
el 12 de Sept. de 2021
a = repmat(a,1,5);
b = repmat(b,1,5);
to get horizontally extended signal? Thanks!
Más respuestas (0)
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!