将不同长度信号的互相关归一化为 [-1,1]

Normalizing cross-correlation to [-1,1] for different length signals

我有以下一段代码用于计算信号之间的互相关。从视觉上看,信号的相关性非常好。信号的长度不同,但都具有 100Hz 的采样率。信号之间存在滞后(下面称为 timeDiff)。

  [acor,lag] = xcorr(signal1,signal2);
  [cor,I] = max(abs(acor));
  lagDiff = lag(I);
  timeDiff = lagDiff/100;
  fprintf('Correlation = %0.5f \n',cor);

我得到的相关性是 6239.06131。如何将其标准化为 -1 和 1?因为否则很难解释。

遵循文档 https://it.mathworks.com/help/signal/ref/xcorr.html

xcorr 函数有标准化选项

[acor,lag] = xcorr(signal1,signal2,'coeff');

那个"normalizes the sequence so that the autocorrelations at zero lag equal 1"。如果给定的时间偏移(滞后)导致两个序列完全正相关或负相关,则 'coeff' 选项仅产生值 1 或 -1。