Skip to main content
 首页 » 编程设计

python之Python中精确的信号延迟计算

2025年05月04日9虾米姐

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

最好的问候 弗雷德里克

请您参考如下方法:

根据两个信号的功率谱,您确实会得到一个小误差,这是因为互相关在每个滞后没有正确归一化。这是我使用的一个小功能;它标准化了每个滞后的重叠区域,我发现它给出了准确的结果:

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)