我想用Python中的互相关函数计算一些信号之间的时间差。从numpy文档numpy.correlate()来看,不太清楚这个函数到底是做什么的。因此,我先用两个简单的方形信号来尝试,代码如下:import matplotlib.pyplot as plt
import numpy as np
frequency=100
x = np.linspace(1,2000,frequency)
time = np.arange(x.size)
time = time/(1.0*frequency) #Time in seconds
def func1(x):
x = np.where((x < 500) | (x > 531), 1, 2)
return x
y1 = func1(x)
def func2(x):
x = np.where((x < 600) | (x > 631), 1, 2)
return x
y2 = func2(x)
def func3(x):
x = np.where((x < 700) | (x > 731), 1, 2)
return x
y3 = func3(x)
xcorr12 = np.correlate(y1,y2, "full")
xcorr13 = np.correlate(y1,y3, "full")
lag12 = np.argmax(xcorr12)
lag13 = np.argmax(xcorr13)
print ("lag12:",lag12/frequency)
print ("lag13:",lag13/frequency)
当我改变信号的位置时,我期望时间延迟会改变,但它不会改变!我不明白为什么y1和y2之间的时间差等于1和y3之间的时间差!?在
你能帮我了解发生了什么事吗?
谢谢:)