【问题标题】:Python Curve FittingPython 曲线拟合
【发布时间】:2013-11-08 09:32:49
【问题描述】:

我正在尝试使用 Python 将曲线拟合到一组点。基本上这些点看起来像这样。

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

最好的方法是什么?这条线看起来像反正切,有什么方法可以指定反正切拟合吗?

我意识到这是一个有点垃圾的问题,但我想在不指定更多分数的情况下离开。任何帮助将不胜感激。

【问题讨论】:

    标签: python curve-fitting


    【解决方案1】:

    似乎您可能在点之间进行插值而不是拟合多项式参考:Spline Interpolation with PythonFitting polynomials to data

    但是,无论哪种情况,这里都有一段代码 sn-p 可以帮助您入门:

    import numpy as np
    import scipy as sp
    from scipy.interpolate import interp1d
    
    x = np.array([0,5,10,15,20,30,40,50])
    y = np.array([0,0,0,12,40,40,40,40])
    
    coeffs = np.polyfit(x, y, deg=4)#you can change degree as you see fit
    poly = np.poly1d(coeffs)
    yp = np.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()
    

    【讨论】:

      猜你喜欢
      • 2021-03-21
      • 1970-01-01
      • 2020-12-06
      • 2013-10-10
      • 2018-12-10
      • 2011-07-07
      • 2015-02-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多