我正在尝试使曲线适合usign scipy.odrpack,但我在命令odrpack.ODR时遇到了问题。
这是我写的代码:

def f(x,i):
    return i[0]*numpy.exp(-i[1]*x)

a=pandas.read_csv("~/Untitled.csv")
exp=odrpack.Model(f)
data=odrpack.RealData(a['t'],a['c1'])
myodr=odrpack.ODR(data, exp, beta0=[1.,2.])
myoutput=myodr.run()
myoutput.pprint()


但是我得到以下错误(10是由于数组的长度):

OdrError: fcn does not output [10]-shaped array


有谁知道为什么我会收到此错误?
谢谢!

最佳答案

您不小心交换了fit函数的参数:

def f(x,i):
    return i[0]*numpy.exp(-i[1]*x)


什么时候应该

def f(i,x):  # note the order of arguments
    return i[0]*numpy.exp(-i[1]*x)

10-06 15:36