2013-10-29 178 views
-1

我想使用python拟合曲线到一组点。基本上这些点看起来像这样。 enter image description herePython曲线拟合

蓝色曲线表示输入的数据(本例中为4点),绿色是使用np.polyfit和polyfit1d进行曲线拟合。我基本上想要的是一个曲线拟合,看起来非常类似于蓝线,但在点1和点2处有渐变的平滑变化(这意味着我不需要线通过这些点)。

这样做的最好方法是什么?这条线看起来像一个反义词,反正有指定一个反正切合适吗?

我意识到这是一个垃圾问题,但我想逃避没有指定更多的点。任何帮助将不胜感激。

回答

0

看来,你可能会点之间的插值之后,而不是拟合多项式参考文献:Spline Interpolation with PythonFitting 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()