我想计算两个信号的归一化互相关函数,其中“x”轴是时间延迟,“y”轴是-1
和1
之间的相关值。所以我决定使用scipy。
我使用命令corr = signal.correlate(s1['Strain'], s2['Strain'], mode='full')
其中,s1['Strain']
和s2['Strain']
是Pandas Dataframe 值,但它不返回以“x”轴作为时间延迟的归一化函数。
s1:
Strain
0 -1.587702e-22
1 -1.425868e-22
2 -1.174897e-22
3 -8.559119e-23
4 -4.949480e-23
. .
. .
. .
对于s2
,它看起来很相似。我知道两个数据集的采样,都是4096 kHz。
谢谢你的帮助。
2条答案
按热度按时间djmepvbi1#
首先得到归一化系数(这样当滞后为0时,我们得到Pearson相关系数):
现在对于滞后,从official documentation of
correlate
可以读出互相关的完整输出由下式给出:其中
*
表示卷积,k精确地从0到||x|| + ||y|| - 2
。N是max(len(x), len(y))
。滞后在上面被表示为卷积
(x * y)
的自变量,因此它们的范围从0 - N + 1
到||x|| + ||y|| - 2 - N + 1
,即n - 1
与n=min(len(x), len(y))
。此外,通过简单查看源代码,我认为如果方便的话,他们有时会交换
x
和y
......(因此在上面的标准化中使用min(len(x), len(y))
。然而,这意味着要更改滞后的开始,因此:摘要
在两个时间序列上检查此代码,您要绘制以下项的交叉相关性:
vmjh9lq92#
为了计算两个信号之间的时间延迟,我们需要找到两个信号之间的互相关,并找到argmax。
假设
data_1
和data_2
是两个信号的样本: