我正在尝试使曲线适合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)