【发布时间】:2020-09-23 13:10:44
【问题描述】:
我正在使用 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 与信号相关后的峰值位置有何关系?
【问题讨论】:
-
什么是
nop?还有,这里的sgn是指scipy.signal吗? -
Nop 是一个什么都不做的函数(没有操作),sgn 是 scipy.signal 是的。我修复了这些错误
标签: python numpy scipy signal-processing cross-correlation