【问题标题】:What are other methods to find curvature of a polynomial apart from np.polyfit()除了 np.polyfit() 之外,还有哪些其他方法可以找到多项式的曲率
【发布时间】:2018-02-28 22:11:47
【问题描述】:

我试图找到多项式的曲率。 X 和 Y 分别是 X 和 Y 坐标的 python 列表。我使用scipy.interpolate,因为我能够在我的图像中看到更好的曲线。但是一旦我找到二维多项式的系数并将它们重新绘制回图像中,重新绘制的曲线看起来就太离谱了。

  • 如何找到多项式曲线的准确系数

    interpolate = interpolate.interp1d(X, Y)
    z = np.polyfit(X, interpolate(X),2)  #coefficients
    poly_y = [z[0]*x*x + z[1]*x + z[2] for x in X] #Recompute Y coordinates
    plt.plot(X, poly_y)
    

【问题讨论】:

  • 欢迎来到 Stack Overflow。请使用tour 并阅读有关How to Ask 的信息。感谢您提供代码 sn-p,但更多 fleshed out example 将使人们更容易帮助您。
  • 您可以使用 Savitzky-Golay 并轻松获得二阶导数。
  • 你说的“太离谱”是什么意思?
  • 如果您在输出结果中提供了数据,那么提供帮助会容易得多。

标签: python numpy scipy curve-fitting


【解决方案1】:

使用np.polyval 而不是列表推导来计算给定坐标处的多项式值。它通常比手动输入术语更快,更不容易出错。结果将是 ndarray 而不是 Python 列表。

poly_y = np.polyval(z, X)

如果曲线看起来太偏离,可能是给定的度数 (2) 不足以准确复制样条插值点。您还应该绘制样条插值interpolate(X) 以查看interp1d 中是否有问题。

【讨论】:

    猜你喜欢
    • 2011-05-12
    • 2012-11-12
    • 2012-10-14
    • 2017-01-15
    • 2018-03-01
    • 2015-02-24
    • 2023-02-08
    • 2017-05-09
    • 2015-10-27
    相关资源
    最近更新 更多