Matlab: xcorr 1d проблема взаимной корреляции нормализации

У меня есть опорный сигнал (s1) с длиной = 5 и другой сигнал (s2) с длиной = 25 выборок (содержащий смещенную версию того же сигнала 5 выборок s1).

Я хочу найти нормализованную взаимную корреляцию между двумя сигналами, чтобы вычислить расстояние выборки (задержка / задержка) между сигналами s1 и s2.

Я дополняю s1 нулями (поэтому длина такой же, как у s2, как требуется для опции xcorr 'coeff'):

s1(numel(s2)) = 0;

а затем сделать:

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

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

найти нормированную взаимную корреляцию для лагов от -24 до 24 образцов.

Поскольку s2 содержит сдвинутую версию s1, я ожидал бы получить максимальное значение корреляции 1, но максимальная корреляция составляет 0,4776 при лаге в 19 выборок. Я не понимаю это?

Если я позволю s1 = s2 и повторю xcorr (теперь s1 и s2 идентичны), я получу максимальное значение корреляции 1,0 при 0 отсчете выборки, как и ожидалось.

Ответы на вопрос(1)

Ваш ответ на вопрос