Matlab: problema de normalização de correlação cruzada xcorr 1d

Eu tenho um sinal de referência (s1) de comprimento = 5 e outro sinal (s2) de comprimento = 25 amostras (contendo uma versão deslocada do mesmo sinal de 5 amostras s1).

Eu quero encontrar a correlação cruzada normalizada entre os dois sinais para calcular a distância da amostra (atraso / atraso) entre os sinais s1 e s2.

Eu preencho s1 com zeros (portanto, é o mesmo comprimento que s2, conforme necessário para a opção xcorr 'coeff'):

s1(numel(s2)) = 0;

e então faça:

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

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

para encontrar a correlação cruzada normalizada para defasagens de -24 a 24 amostras.

Como s2 contém uma versão deslocada de s1, eu esperaria obter um valor máximo de correlação de 1, mas a correlação máxima é de 0,4776 com um atraso de 19 amostras. Eu não entendo isso?

Se eu deixar s1 = s2 e repetir xcorr (agora s1 e s2 são idênticos), obtenho um valor de correlação máximo de 1,0 no atraso de amostra 0, conforme o esperado.

questionAnswers(1)

yourAnswerToTheQuestion