用高斯拟合

卢卡

尝试使用高斯拟合文本文件中的数据时遇到一些问题。这是我的代码,其中 cal1_p1 是一个包含 54 个值的数组。

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

cal1=np.loadtxt("C:/Users/Luca/Desktop/G3/X_rays/cal1_5min_Am.txt")
cal1_p1=[0 for a in range(854,908)]
for i in range(0,54):
      cal1_p1[i]=cal1[i+854]   
# cal1_p1 takes the following values: 

[5.0,6.0,5.0,11.0,4.0,9.0,14.0,13.0,13.0,14.0,12.0,13.0,16.0,20.0,15.0,23.0,23.0,33.0,43.0,46.0.40.0,46.0.40.0,46.0,40.0.5 ,61.0,53.0,65.0,64.0,42.0,72.0,55.0,47.0,43.0,38.0,46.0,37.0,39.0,27.0,18.0,20.0,20.0,42.0,72.0,55.0,47.0,43.0,38.0,46.0,37.0,39.0,27.0,18.0,20.0,20.0,18.0,10.0.0.0.,10.0.0.0.0,10.0.0.0.0.,10.0.0.0. ,6.0,10.0,6.0,4.0]

x=np.arange(854,908)

def gauss(x,sigma,m):
    return np.exp(-(x-m)**2/(2*sigma**2))/(sigma*np.sqrt(2*np.pi))
from scipy.optimize import curve_fit
popt,pcov=curve_fit(gauss,x,cal1_p1,p0=[10,880])

plt.xlabel("Channel")
plt.ylabel("Counts")
axes=plt.gca()
axes.set_xlim([854,907])
axes.set_ylim([0,75])
plt.plot(x,cal1_p1,"k")     
plt.plot(x,gauss(x,*popt),'b', label='fit')

问题是产生的高斯真的被压缩了,即它的方差非常低。即使我尝试修改初始值 p_0,结果也不会改变。可能是什么问题呢?感谢您的任何帮助,您可以提供!

9769953

问题是高斯是归一化的,而你的数据不是。您还需要拟合振幅。这很容易解决,只需a向您的函数添加一个额外的参数

x = np.arange(854, 908)

def gauss(x, sigma, m, a):
    return a * np.exp(-(x-m)**2/(2*sigma**2))/(sigma*np.sqrt(2*np.pi))

popt, pcov = curve_fit(gauss, x, cal1_p1, p0=[10, 880, 1])
print(popt)
plt.xlabel("Channel")
plt.ylabel("Counts")
axes=plt.gca()
axes.set_xlim([854, 907])
axes.set_ylim([0, 75])
plt.plot(x, cal1_p1, "k")  
plt.plot(x, gauss(x,*popt), 'b', label='fit')

虽然我已将 1 作为 的起始参数a,但您会发现拟合值实际上是:

[   9.55438603  880.88681556 1398.66618699]

但是这里的幅度值可能可以忽略,因为我假设您只对相对强度感兴趣,可以用计数来衡量。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

用固定的某些参数拟合双峰高斯分布

来自分类Dev

直方图和高斯拟合

来自分类Dev

Scikit学习,使高斯拟合直方图

来自分类Dev

SciPy 1D高斯拟合

来自分类Dev

在Winbugs中拟合分布混合(高斯+均匀)

来自分类Dev

高斯拟合不适用于Python

来自分类Dev

尝试使高斯+直线拟合数据

来自分类Dev

在Python II中将高斯拟合到曲线

来自分类Dev

在Python中将高斯拟合到曲线

来自分类Dev

2D高斯拟合直方图

来自分类Dev

使更好的高斯拟合数据点?

来自分类Dev

拟合(高斯)与 Scipy vs. ROOT 等

来自分类Dev

用Python拟合总和

来自分类Dev

用R拟合分布

来自分类Dev

在直方图python中拟合非标准化的高斯

来自分类Dev

Python加载数据并进行多高斯拟合

来自分类Dev

将高斯拟合到python中的吸收线

来自分类Dev

如何在python中拟合三个高斯峰?

来自分类Dev

将高斯曲线拟合到python中的数据

来自分类Dev

如何为累积高斯拟合估计正确的参数?

来自分类Dev

Python 高斯拟合与直方图条形颜色相同

来自分类Dev

相当于R中的高斯混合模型的Matlab“拟合”?

来自分类Dev

在较少表达的双峰数据上拟合两个高斯

来自分类Dev

高斯拟合..错误:OptimizeWarning:无法估计参数的协方差

来自分类Dev

python&scikit:如何从高斯混合模型拟合中获得拟合模型的参数?

来自分类Dev

在某些情况下,将单个高斯拟合到“嘈杂”数据会导致拟合不佳

来自分类Dev

用fitdistrplus拟合Gumbel分布

来自分类Dev

用numpy拟合数据

来自分类Dev

用gnuplot拟合Sinc函数