简体   繁体   English

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

[英]Power correlation between two normalized time-series signals in Python?

I have two normalized ([1,0]) signals (images attached). 我有两个归一化([1,0])信号(已附加图像)。 Each signal has many peaks and dips. 每个信号都有许多峰和谷。 However, both signal have a maximum at approximately same time (in the attached pics, at 2.5 seconds both signals have maximum value of 1.0). 但是,两个信号在大约相同的时间具有最大值(在所附图片中,两个信号在2.5秒时的最大值为1.0)。 I would to like to run correlation between two signals to have the maximum be at 2.5 s. 我想在两个信号之间进行相关,以使最大值为2.5 s。 When I run numpy.correlate, I get a peak at a different time step than where the maximum values are. 当我运行numpy.correlate时,我在与最大值不同的时间步长处得到一个峰值。 How can I get a maximum correlation peak at time 2.5 s? 如何在2.5 s时获得最大相关峰? Any ideas/suggestions would help greatly. 任何想法/建议都会有很大帮助。 Thanks! 谢谢!

信号1

信号2

To receive a peak at the right location you have to divide by the number of the summed elements. 要在正确的位置接收峰,必须除以求和元素的数量。 This can be easily overlooked using the numpy/scipy functions which sums but do not divide by the length. 使用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))

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM