小编and*_*rud的帖子

高斯数据拟合因x数据的位置而异

我很难理解为什么我将高斯拟合到一组数据(ydata)时无法正常工作,如果我将与该数据相对应的x值的间隔(xdata1到xdata2)移开了。高斯写为:

其中A只是一个振幅因子。更改数据的某些值,很容易使其适用于两种情况,但是也可以轻松地找到不适用于这些情况以及xdata1未估计参数协方差的情况。我scipy.optimize.curve_fit在Windows 7上的Python 3.7.1中的Spyder中使用。

代码的结果

import numpy as np
from scipy.optimize import curve_fit
import matplotlib.pyplot as plt

xdata1 = np.linspace(-9,4,20, endpoint=True) # works fine
xdata2 = xdata1+2
ydata = np.array([8,9,15,12,14,20,24,40,54,94,160,290,400,420,300,130,40,10,8,4])

def gaussian(x, amp, mean, sigma):
    return amp*np.exp(-(((x-mean)**2)/(2*sigma**2)))/(sigma*np.sqrt(2*np.pi))

popt1, pcov1 = curve_fit(gaussian, xdata1, ydata)
popt2, pcov2 = curve_fit(gaussian, xdata2, ydata)

fig, ([ax1, ax2]) = plt.subplots(nrows=1, ncols=2,figsize=(9, 4))

ax1.plot(xdata1, ydata, 'b+:', label='xdata1')
ax1.plot(xdata1, gaussian(xdata1, *popt1), 'r-', label='fit')
ax1.legend()
ax2.plot(xdata2, ydata, 'b+:', label='xdata2')
ax2.plot(xdata2, …
Run Code Online (Sandbox Code Playgroud)

python gaussian curve-fitting data-fitting

5
推荐指数
1
解决办法
72
查看次数

标签 统计

curve-fitting ×1

data-fitting ×1

gaussian ×1

python ×1