我必须比较两个时间 - 电压波形.由于这些波形源的特殊性,其中一个可以是另一个的时移版本.
我怎样才能找到时间转移?如果是的话,它有多少.
我在Python中这样做,并希望使用numpy/scipy库.
我有两个数据集列出了在时间t两个神经网络组件的平均电压输出,看起来像这样:
A = [-80.0, -80.0, -80.0, -80.0, -80.0, -80.0, -79.58, -79.55, -79.08, -78.95, -78.77, -78.45,-77.75, -77.18, -77.08, -77.18, -77.16, -76.6, -76.34, -76.35]
B = [-80.0, -80.0, -80.0, -80.0, -80.0, -80.0, -78.74, -78.65, -78.08, -77.75, -77.31, -76.55, -75.55, -75.18, -75.34, -75.32, -75.43, -74.94, -74.7, -74.68]
Run Code Online (Sandbox Code Playgroud)
当两个神经组件在一定程度上"同相"时,这意味着它们是相互关联的.我想要做的是计算A和B之间的相位差,最好是在模拟的整个时间.由于两个组件不太可能完全同相,我想将该相位差与某个阈值进行比较.
这些是非谐振荡器,我不知道它们的功能,只知道这些值,所以我不知道如何确定相位或相应的相位差.
我在Python中使用numpy和scipy来做这个项目(两个程序集都是numpy数组).
任何建议将不胜感激!
编辑:添加图
以下是两个数据集的外观图:

我编写了以下代码来执行样条插值:
import numpy as np
import scipy as sp
x1 = [1., 0.88, 0.67, 0.50, 0.35, 0.27, 0.18, 0.11, 0.08, 0.04, 0.04, 0.02]
y1 = [0., 13.99, 27.99, 41.98, 55.98, 69.97, 83.97, 97.97, 111.96, 125.96, 139.95, 153.95]
x = np.array(x1)
y = np.array(y1)
new_length = 25
new_x = np.linspace(x.min(), x.max(), new_length)
new_y = sp.interpolate.interp1d(x, y, kind='cubic')(new_x)
Run Code Online (Sandbox Code Playgroud)
但我得到了:
ValueError: A value in x_new is below the interpolation range.
Run Code Online (Sandbox Code Playgroud)
在 interpolate.py
任何帮助,将不胜感激.
我有两个相互关联的信号,它们同时被两个不同的测量设备捕获。由于这两个测量不是时间同步的,因此我想计算它们之间的时间延迟很小。此外,我需要知道哪个信号是领先的。
可以假设如下:
我认为为此目的使用互相关。非常感谢如何在 Python 中实现它的任何建议。
请让我知道我是否应该提供更多信息以找到最合适的算法。