Ограничение гауссианов полушириной

Во-первых, моя математика ограничена, поэтому на этот вопрос может быть простой ответ. Итак, я использую следующее уравнение для создания гуассовых распределений:

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

Когда я делаю гуссианы с помощью приведенного выше уравнения, где применяется ширина пика? Это на полную ширину половину максимума? Я сделал следующий гаусс со следующими значениями:

height = 5
mean = 100
width = 10

введите здесь описание изображения

Когда я затем рассчитываю FWHM, это 16.6510941453, поэтому ширина пика не может быть применена к FWHM. Где применяется?

Я пытаюсь ограничить FWHM так, чтобы FWHM была в 10 раз меньше, чем у среднего. Таким образом, в приведенном выше примере мне бы хотелось, чтобы гауссиана имела полуширину 10 при среднем значении 100 при высоте пика 5.


person Harpal    schedule 16.05.2012    source источник
comment
Формула для гауссовского распределения находится здесь . Сигма – это стандартное отклонение. Му – это среднее. Решите для f () = 0,5Mu, и это даст вам ответ.   -  person Joel Cornett    schedule 16.05.2012
comment
разве Му не центральная точка пика?   -  person Harpal    schedule 16.05.2012
comment
О да, извините. Я имел в виду найти x для 0,5 * f (Mu)   -  person Joel Cornett    schedule 16.05.2012
comment
В Википедии есть хорошая статья о FWHM, которая может оказаться полезной: /а>   -  person Hooked    schedule 17.05.2012


Ответы (1)


В вашем уравнении параметр ширины на самом деле равен sigma, что является стандартным отклонением гаусса, а не полуширины. Ниже приведены функции для преобразования между двумя этими свойствами.

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, а не стандартное отклонение

person SethMMorton    schedule 16.05.2012