将不同长度信号的互相关归一化为 [-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。
我有以下一段代码用于计算信号之间的互相关。从视觉上看,信号的相关性非常好。信号的长度不同,但都具有 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。