我有一些点,我正在尝试为这些点拟合曲线。我知道存在 scipy.optimize.curve_fit
函数,但我不了解文档,即如何使用此函数。
我的观点:np.array([(1, 1), (2, 4), (3, 1), (9, 3)])
谁能解释一下怎么做?
最佳答案
我建议你从简单的多项式拟合开始,scipy.optimize.curve_fit
尝试将您必须知道的函数 f
拟合到一组点。
这是一个使用 numpy.polyfit
和 poly1d
的简单 3 度多项式拟合,第一个执行最小二乘多项式拟合,第二个计算新点:
import numpy as np
import matplotlib.pyplot as plt
points = np.array([(1, 1), (2, 4), (3, 1), (9, 3)])
# get x and y vectors
x = points[:,0]
y = points[:,1]
# calculate polynomial
z = np.polyfit(x, y, 3)
f = np.poly1d(z)
# calculate new x's and y's
x_new = np.linspace(x[0], x[-1], 50)
y_new = f(x_new)
plt.plot(x,y,'o', x_new, y_new)
plt.xlim([x[0]-1, x[-1] + 1 ])
plt.show()
关于python numpy/scipy曲线拟合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19165259/