通过互相关查找信号或相位延迟

问题描述

我正在使用python,但这是一个通用问题(与算法等相关性更强),因此我跳过了一些步骤以了解问题的要点:

我生成这样的正弦信号:

import math as m
signal = [m.sin(2*m.pi*1*(t/n-d)) for t in range(n)]

因此归一化为正弦信号,该频率为1,时间从0到1秒(因此基本上是一个简单的正弦波周期)。还有一个延迟项d,它会延迟信号(导致相移)。 n只是样本数

我还会创建另一个信号,但会有另一个延迟。假设我对第一个信号使用0的延迟,对第二个信号使用x的延迟(为清楚起见,我将其缩写为缩写):

signal1 = signal(delay=0)
signal2 = signal(delay=x)

然后进行关联:

from scipy import signal as sgn
corr11 = sgn.correlate(signal1,signal1,mode = 'full')
corr12 = sgn.correlate(signal1,signal2,mode = 'full')

我也知道信号延迟与相关点的最大值相关,所以我取出了两个点:

import numpy as np

a1 = np.argmax(corr11)
a2 = np.argmax(corr12)

因此,我发现信号与其自身的相关在相关数组(或图/函数)的中间具有最大峰值。但是另一个高峰很奇怪:

  • 在延迟0和1:a2与a1相同
  • 在延迟0.5时:a2与a1的距离是a1(反相信号)的0.5
  • 延迟0.28328:a2为a1的0.75
  • 延迟0.1:a2为a1的0.90888

问题是,在将信号相关之后,延迟d与峰值位置如何相关?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)