首先我的数学是有限的,所以这个问题可能有一个简单的答案。所以,我使用以下等式来进行guassian分布:
height * np.exp( - ((x-mean)/width)**2 )
当我使用上面的等式制作gussians时,应用峰的宽度在哪里?是全宽半高吗?我使用以下值制作了以下高斯:
height = 5
mean = 100
width = 10
当我计算FWHM时,它是16.6510941453
,因此峰宽不能应用于FWHM。在哪里应用?
我试图限制FWHM,因此FWHM比平均值小10倍。因此,在上面的例子中,我希望高斯在峰值高度为5时,平均值为100,FWHM为10。
答案 0 :(得分:2)
在等式中,width参数实际上是sigma
,这是高斯的标准偏差,而不是FWHM。以下是在这两个属性之间进行转换的函数
from numpy import sqrt, log
def sigma2Gamma(sigma):
'''Function to convert standard deviation (sigma) to FWHM (Gamma)'''
return sigma * sqrt(2 * log(2)) * 2 / sqrt(2)
Gamma = sigma2Gamma(10)
print Gamma
# prints 16.651092223153956, which is what you saw in your graph
def Gamma2sigma(Gamma):
'''Function to convert FWHM (Gamma) to standard deviation (sigma)'''
return Gamma * sqrt(2) / ( sqrt(2 * log(2)) * 2 )
sigma = Gamma2sigma(10)
print sigma
# prints 6.0056120439322491, which is the standard deviation that will
# give a FWHM of 10
我建议您改变等式
height * np.exp( - ((x-mean)/Gamma2sigma(width))**2 )
如果要输入FWHM而不是标准偏差