考虑不确定性的高斯拟合

我无法理解以下代码有什么问题:


import numpy as np

import matplotlib.pyplot as plt

from 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与工作需要一样多。如果有人能指出错误来源或我的误解,那就太好了。


慕婉清6462132
浏览 162回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python