也许你正在寻找互相关:
scipy.signal.signaltools.correlate(A, B)
互相关峰值的位置将是相位差的估计.
编辑3:现在更新我已经查看了真正的数据文件.找到相移为零的原因有两个.首先,你的两个时间序列之间的相移真的是零.你可以清楚地看到这一点,如果你在水平放大的matplotlib图表.第二,首先对数据进行正则化(最重要的是减去平均值)是重要的,否则在阵列末端的零填充效应会在互相关中消除实际信号.在下面的例子中,我通过添加一个人工移位来验证我是否找到了“真正的”峰值,然后检查我正确地恢复它.
import numpy, scipy
from scipy.signal import correlate
# Load datasets, taking mean of 100 values in each table row
A = numpy.loadtxt("vb-sync-XReport.txt")[:,1:].mean(axis=1)
B = numpy.loadtxt("vb-sync-YReport.txt")[:,1:].mean(axis=1)
nsamples = A.size
# regularize datasets by subtracting mean and dividing by s.d.
A -= A.mean(); A /= A.std()
B -= B.mean(); B /= B.std()
# Put in an artificial time shift between the two datasets
time_shift = 20
A = numpy.roll(A, time_shift)
#