Python中准确的信号延迟计算

时间:2010-09-29 19:57:52

标签: python signals lag correlation

我正在尝试使用互相关来计算Python中两个信号之间的延迟。除了非常小的时间间隔外,这两个信号几乎完全相同。我已经尝试过numpy.correlate和scipy.convolve(很快)并且两者都运行得相对较好但是给出了一个小错误。我开始怀疑错误是Python / scipy / numpy在某处截断浮点数的结果。有没有人能够在Python中使用高精度信号延迟计算?

祝你好运 弗雷德里克

1 个答案:

答案 0 :(得分:0)

根据两个信号的功率谱,由于互相关在每个延迟时未正确归一化,因此会产生较小的误差。这是我使用的一个小功能;它规定了每个滞后的重叠区域,我发现它给出了准确的结果:

def NormCrossCorrSlow(x1, x2,
                  nlags=400):
res=[]
for i in range(-(nlags/2),nlags/2,1):
    if i<0:
        xx1=x1[:i]
        xx2=x2[-i:]
    elif i==0:
        xx1=x1
        xx2=x2
    else:
        xx1=x1[i:]
        xx2=x2[:-i]
    res.append( (xx1*xx2).sum() /( (xx1**2).sum() *(xx2**2).sum() )**0.5)
return numpy.array(res)