Matlab: problema de normalización de correlación cruzada xcorr 1d

Tengo una señal de referencia (s1) de longitud = 5 y otra señal (s2) de longitud = 25 muestras (que contiene una versión desplazada de la misma señal de muestra de 5 s1).

Quiero encontrar la correlación cruzada normalizada entre las dos señales para calcular la distancia de muestra (retraso / retraso) entre las señales s1 y s2.

Relleno s1 con ceros (por lo que tiene la misma longitud que s2 como se requiere para la opción xcorr 'coeff'):

s1(numel(s2)) = 0;

y luego hacer:

[R lags]=xcorr(s2,s1,'coeff');

[vm im]=max(R); %max. correlation and index
s1_lag=lags(im);

para encontrar la correlación cruzada normalizada para retrasos de -24 a 24 muestras.

Dado que s2 contiene una versión desplazada de s1, esperaría obtener un valor de correlación máximo de 1, pero la correlación máxima es 0.4776 con un retraso de 19 muestras. No entiendo esto?

Si dejo s1 = s2 y repito xcorr (ahora s1 y s2 son idénticos) obtengo un valor de correlación máximo de 1.0 a 0 retraso de muestra como se esperaba.

Respuestas a la pregunta(1)

Su respuesta a la pregunta