2

现在,我正在尝试将曲线拟合到大量数据;有两个数组 x 和 y,每个数组有 352 个元素。我已经为数据拟合了一个多项式,效果很好:

import numpy as np
import matplotlib.pyplot as plt
coeff=np.polyfit(x, y, 20)
coeff=np.polyfit(x, y, 20)
poly=np.poly1d(coeff)

但我需要一个更精确优化的曲线,所以我一直在尝试用 scipy 拟合曲线。这是我到目前为止的代码:

import numpy as np
import scipy
from scipy import scipy.optimize as sp
coeff=np.polyfit(x, y, 20)
coeff=np.polyfit(x, y, 20)
poly=np.poly1d(coeff)
poly_y=poly(x)
def poly_func(x): return poly(x)
param=sp.curve_fit(poly_func, x, y)

但它返回的只是:

ValueError: Unable to determine number of fit parameters.

我怎样才能让它工作?(或者我怎样才能将曲线拟合到这些数据?)

4

1 回答 1

3

您的拟合函数没有意义,它不需要任何参数来拟合。

曲线拟合使用非线性优化器,需要对拟合参数进行初始猜测。如果没有给出猜测,它会尝试通过自省来确定参数的数量,这对你的函数来说是失败的,并将它们设置为一个(你几乎不想要的东西。)

于 2011-07-28T06:01:45.350 回答