Python交叉相关没有返回正确的移位

时间:2017-05-16 23:24:23

标签: python cross-correlation

我正在学习互相关,为此我在一些简单的例子中运行scipy.signal.correlate。然而,存在相关函数的最大值与输入时移不一致的情况(即使dt中存在正确的时移)。我怀疑问题出在我对dt的定义中,但经过几次迭代后,我还没有设法让这种转变始终正确。

def cross_corr(a, b, t):
    ccf = signal.correlate(a,b,mode='full')

    #Convert from array spacing into time shift
    step = np.mean(t[-1]-t[0])/t.size
    dt = np.linspace(-b.size + 1, a.size - 1, ccf.size)*step

    time_shift = dt[np.argmax(ccf)]

    return dt, ccf, time_shift

#Generate some toy data
t = np.linspace(0.,2.*np.pi,100)
y1 = np.sin(x)
y2 = np.sin(x+2.45)

dt, ccf, time_shift = cross_corr(y1, y2, t)

此特定示例返回time_shift = 2.32时应为2.45

0 个答案:

没有答案