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 отсчете выборки, как и ожидалось.