【问题标题】:Scipy curve_fit multiple series of datascipy curve_fit 多系列数据
【发布时间】:2017-10-08 08:29:53
【问题描述】:


我正在尝试进行曲线拟合,该曲线拟合基于相同的 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

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

【问题讨论】:

标签: python numpy scipy curve-fitting


【解决方案1】:

您应该正确地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 的引用元素都是一维的。

【讨论】:

  • 谢谢!我只是太习惯了 Matlab 曲线拟合工具
猜你喜欢
  • 2021-12-30
  • 2017-04-08
  • 2017-01-31
  • 2014-09-05
  • 1970-01-01
  • 2021-02-16
  • 2012-11-02
  • 2013-10-12
  • 1970-01-01
相关资源
最近更新 更多