用半高宽函数约束高斯函数

2024-04-27 01:08:27 发布

您现在位置:Python中文网/ 问答频道 /正文

首先我的数学有限,所以这个问题可能有一个简单的答案。所以,我用下面的方程来计算高斯分布:

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

当我用上面的方程来做gussians时,峰的宽度在哪里?它是全宽的一半吗?我用以下值生成了以下高斯:

^{pr2}$

enter image description here

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

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


Tags: 函数答案宽度np数学meanwidth例子
1条回答
网友
1楼 · 发布于 2024-04-27 01:08:27

在方程中,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

我建议你把方程式改成

^{pr2}$

如果你想输入FWHM而不是标准偏差

相关问题 更多 >