我无法理解以下代码有什么问题:import numpy as npimport matplotlib.pyplot as pltfrom scipy.odr import *def gauss(p,x): return p[0]*np.exp(-(x-p[1])**2/(2*p[2]**2)+p[4]) + p[3]# Create a model for fitting.gg = Model(gauss)x = np.arange(0, 350)# Create a RealData object using our initiated data from above.data = RealData(x, y_data, sx=0, sy=y_data_err)# Set up ODR with the model and data.odr = ODR(data, gg, beta0=[0.1, 1., 1.0, 1.0, 1.0])# Run the regression.out = odr.run()# Use the in-built pprint method to give us results.out.pprint()x_fit = np.linspace(x[0], x[-1], 1000)y_fit = gauss(out.beta, x_fit)plt.figure()plt.errorbar(x, xy_data xerr=0, yerr=y_data_err, linestyle='None', marker='x')plt.plot(x_fit, y_fit)plt.show()这是从这里直接复制的,只更改了模型。我得到的错误是scipy.odr.odrpack.odr_error: number of observations do not match但据我所知beta0有五个参数,这gauss与工作需要一样多。如果有人能指出错误来源或我的误解,那就太好了。
添加回答
举报
0/150
提交
取消