0

首先我的数学有限,所以这个问题可能有一个简单的答案。因此,我使用以下等式来制作高斯分布:

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

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

height = 5
mean = 100
width = 10

在此处输入图像描述

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

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

4

1 回答 1

2

在您的等式中,宽度参数实际上是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 而不是标准偏差

于 2012-05-16T18:02:36.647 回答