我正在尝试使用python将曲线拟合到一组点。基本上这些点看起来像这样。
蓝色曲线表示输入的数据(在本例中为4个点),绿色是使用np.polyfit和polyfit1d拟合的曲线。我本质上想要的是曲线拟合看起来非常类似于蓝线但在第1点和第2点的渐变更平滑(意味着我不需要线穿过这些点)。
最好的方法是什么?这条线看起来像一个反正切,无论如何指定一个反正切的拟合?
我意识到这是一个垃圾问题,但我想在不指定更多积分的情况下逃脱。任何帮助将不胜感激。
答案 0 :(得分:1)
似乎您可能在点之间进行插值而不是拟合多项式参考:Spline Interpolation with Python和Fitting polynomials to data
但是,无论哪种情况,这里都有一段代码片段,可以帮助您入门:
import numpy as np
import scipy as sp
from scipy.interpolate import interp1d
x = numpy.array([0,5,10,15,20,30,40,50])
y = numpy.array([0,0,0,12,40,40,40,40])
coeffs = numpy.polyfit(x, y, deg=4)#you can change degree as you see fit
poly = numpy.poly1d(coeffs)
yp = numpy.polyval(poly, x)
interpLength = 10
new_x = np.linspace(x.min(), x.max(), new_length)
new_y = sp.interpolate.interp1d(x, y, kind='cubic')(new_x)
plt.plot(x, y, '.', x, yp, '-', new_x,new_y, '--')
plt.show()