让高斯人受到FWHM的限制

时间:2012-05-16 17:17:52

标签: python matplotlib gaussian

首先我的数学是有限的,所以这个问题可能有一个简单的答案。所以,我使用以下等式来进行guassian分布:

height * np.exp( - ((x-mean)/width)**2 )

当我使用上面的等式制作gussians时,应用峰的宽度在哪里?是全宽半高吗?我使用以下值制作了以下高斯:

height = 5
mean = 100
width = 10

enter image description here

当我计算FWHM时,它是16.6510941453,因此峰宽不能应用于FWHM。在哪里应用?

我试图限制FWHM,因此FWHM比平均值小10倍。因此,在上面的例子中,我希望高斯在峰值高度为5时,平均值为100,FWHM为10。

1 个答案:

答案 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而不是标准偏差