python在范围内随机偏移_python – 估计两个时间序列之间的小时间偏移

这是一个非常有趣的问题。这是尝试使用傅里叶变换的部分解决方案。这依赖于中等周期的数据。我不确定它是否可以与您的数据一起使用(端点衍生工具似乎不匹配)。

import numpy as np

X = np.linspace(0,2*np.pi,30) #some X values

def yvals(x):

return np.sin(x)+np.sin(2*x)+np.sin(3*x)

Y1 = yvals(X)

Y2 = yvals(X-0.1) #shifted y values

#fourier transform both series

FT1 = np.fft.fft(Y1)

FT2 = np.fft.fft(Y2)

#You can show that analyically, a phase shift in the coefficients leads to a

#multiplicative factor of `exp(-1.j * N * T_d)`

#can't take the 0'th element because that's a division by 0. Analytically,

#the division by 0 is OK by L'hopital's rule, but computers don't know calculus :)

print np.log(FT2[1:]/FT1[1:])/(-1.j*np.arange(1,len(X)))

对印刷输出的快速检查显示,频率最高

功率(N = 1,N = 2)给出合理的估计,N = 3也可以,如果你看

绝对值(np.absolute),虽然我很失望地解释为什么会这样。

也许更熟悉数学的人可以从这里得到更好的答案…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值