Scipy curve_fit多个数据系列

时间:2017-05-09 21:00:55

标签: python numpy scipy curve-fitting


我正在尝试使用基于相同x值和相同(指数)定律的多个y系列来拟合曲线。系列中的y值变化很小,因为它们是实验性的但仍然接近(在相同的x)。

我尝试构建两个数组:一个是x,一个是两个不同的y

系列
def f(x,a,b,c):
    return a*numpy.exp(-b*x)+c
xdata=numpy.array([data['x'],data['x']])
ydata = numpy.array([data['y1'], data['y2']])
popt, pcov=curve_fit(f,xdata,ydata)

但是出现了这个错误:

TypeError: Improper input: N=3 must not exceed M=2

有谁知道如何解决这个错误或者这种曲线拟合的正确方法?

1 个答案:

答案 0 :(得分:3)

您应该正确concatenate数据而不是创建多维数组。 curve_fit中没有任何内容表明数据必须按x排序:

xdata = np.concatenate((data['x'], data['x']))
ydata = np.concatenate((data['y1'], data['y2']))
popt, pcov = curve_fit(f, xdata, ydata)

这假设data的引用元素都是1D。