Python中两个标准化时间序列信号之间的功率相关性?

时间:2018-10-30 04:03:10

标签: python math time-series signal-processing correlation

我有两个归一化([1,0])信号(已附加图像)。每个信号都有许多峰和谷。但是,两个信号在大约相同的时间具有最大值(在所附图片中,两个信号在2.5秒时的最大值为1.0)。我想在两个信号之间进行相关,以使最大值为2.5 s。当我运行numpy.correlate时,我在与最大值不同的时间步长处得到一个峰值。如何在2.5 s时获得最大相关峰?任何想法/建议都会有很大帮助。谢谢!

signal 1

signal 2

1 个答案:

答案 0 :(得分:0)

要在正确的位置接收峰,必须除以求和元素的数量。可以使用numpy / scipy函数轻松地忽略这一点,该函数求和但不除以长度。

from scipy.signal import correlate

corr = correlate(x1, x2, 'same')
norm_arr = np.concatenate((np.arange(x1.size / 2)[::-1], np.arange(x1.size / 2)))
corrected_corr = corr / (samples.size - norm_arr)/(np.std(x1)*np.std(x2))