Python曲线拟合
我正在尝试使用python将曲线拟合到一组点。基本上,这些点是这样的。 蓝色曲线表示输入的数据(本例中为4点),绿色曲线表示使用np.polyfit和polyfit1d进行的曲线拟合。我本质上想要的是一个曲线拟合,它看起来非常类似于蓝线,但在点1和点2的梯度变化更平滑(这意味着我不需要线通过这些点) 最好的方法是什么?该线看起来像一条弧切线,是否仍有指定弧切线拟合的选项Python曲线拟合,python,curve-fitting,Python,Curve Fitting,我正在尝试使用python将曲线拟合到一组点。基本上,这些点是这样的。 蓝色曲线表示输入的数据(本例中为4点),绿色曲线表示使用np.polyfit和polyfit1d进行的曲线拟合。我本质上想要的是一个曲线拟合,它看起来非常类似于蓝线,但在点1和点2的梯度变化更平滑(这意味着我不需要线通过这些点) 最好的方法是什么?该线看起来像一条弧切线,是否仍有指定弧切线拟合的选项 我意识到这是一个有点垃圾的问题,但我想在不说明更多要点的情况下离开。任何帮助都将不胜感激。看来您可能需要在点之间插值,而不是
我意识到这是一个有点垃圾的问题,但我想在不说明更多要点的情况下离开。任何帮助都将不胜感激。看来您可能需要在点之间插值,而不是拟合多项式参考:和 但是,在任何一种情况下,这里都有一段代码片段,可以让您开始:
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()