【问题标题】:Scipy: Find Shift between Two Signals of Different LengthScipy:查找不同长度的两个信号之间的偏移
【发布时间】:2018-07-10 21:11:06
【问题描述】:

在python中,我有两个不同长度的相似信号,我想找到它们之间的偏移量。

我发现了这个帖子:find time shift between two similar waveforms

但我不明白不同长度信号的解释。

例如:

a=[0,0,1,2,3]
b=[0,0,0,0,1,2,3,0]

numpy.argmax(scipy.signal.correlate(a,b)) 给出5,我不明白。 numpy.argmax(scipy.signal.correlate(b,a)) 给出6,这似乎是b 应该向右移动的量,假设环绕。谁能解释一下?

【问题讨论】:

    标签: python scipy signals signal-processing


    【解决方案1】:

    帖子“查找两个相似波形之间的时间偏移”使用数学“相关”,这仅对相同大小的数组有意义。

    对于您的应用程序,以下代码将提供所需的班次

    import numpy as np
    a=[0,0,1,2,3]
    b=[0,0,0,0,1,2,3,0]
    np.argmax(np.convolve(a[::-1],b,mode='valid'))
    

    ~~~~~~~~~~~~~~~~~~~~~ 对于后续评论问题。试试

    from scipy.linalg import circulant
    b=[0,1,2,3,0]
    a=[0,0,1,2,3]
    [ i for i in range(len(b)) if not False in (a==circulant(b)[:,i])]
    

    问题是卷积不能识别圆形矩阵

    【讨论】:

    • 谢谢,确实有效。我的目标是找出应该转移多少a。如果b=[0,1,2,3,0]上面的命令给出0,那就错了。是否有适用于这两种情况的通用命令?
    猜你喜欢
    • 2016-09-01
    • 2019-10-22
    • 2018-02-13
    • 1970-01-01
    • 2019-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-02
    相关资源
    最近更新 更多