我在python中有一些数据,它代表跨视频的多个帧检测到的SURF关键点的运动。我需要将经历其他类型运动的点振荡的点分开。我想我应该能够通过将正弦函数拟合到数据然后对参数进行阈值处理来丢弃我正在寻找的参数之外的运动。
所以我定义了通用的正弦函数并调用scipy.optimize.curve_fit
def sine(x,a,b,c,d):
return a * np.sin(b*(x+c)) + d
opt, cov = opt.curve_fit(sine, np.linspace(0,119,119), x[:,5])
(x[:,5]
是我知道的数据元素,具有相当干净和明显的正弦特征)
但是当我在matplotlib中对sine(sine(np.linspace(0,119,119), *opt)
绘制x[:,5]
时,我得到的曲线看起来与我的数据不同,除了y轴偏差
我错过了什么,或者这只是在可以做的事情之外?