형광 수명 곡선에 적합하고 싶습니다. 이러한 곡선은 악기 응답 함수의 컨볼 루션 (IRF는 가우시안으로 가정)와 (다) 지수 함수 감쇠에 의해 주어진다 : G는 가우시안 및 F의 지수 감쇠이다numpy/scipy를 사용하여 파이썬에서 푸리에 변환/반복 deconvolution 피팅
. 나는 다음과 같은 기능, lmfit.minimize를 사용하여 파이썬이 피팅 시도했다 :
GAUS는 가우스 악기 응답 함수를 정의def gaus(t, gamp, gwidth, gtoff):
i = gamp*math.exp(-(t-gtoff)**2/gwidth)
return i
def exp1(t, expamp, exptime, exptoff):
i = expamp*math.exp((t-exptoff)/(exptime))
return i
def func1(t, gamp, gwidth, gtoff, expamp1, exptime1, exptoff1):
i = [(scipy.integrate.quad(lambda Tpr: gaus((ti - Tpr), gamp, gwidth, gtoff)*exp1(ti, expamp1, exptime1, exptoff1), 0, ti))[0]
for ti in t]
return i
, EXP1 단일 지수 붕괴이다. 작품이 종류이지만
def fitfunc(params, x, data):
..getting parameters part here..
values = func1(t, gamp, gwidth, toff, expamp1, exptime1, toff)
return values - data
result = lmfit.minimize(fitfunc, fit_params, args = (t, test))
, 피팅 프로세스 : FUNC1, 그것은 되돌아가 착용감의 차이를 계산하기 위해 사용되는 값과 데이터를 지정된 파라미터 세트를 scipy.integrate과 둘 사이의 컨볼 루션을 계산 매우 느리고 아직 내 합리적인 적합성을 부여하지 않았습니다.
푸리에 변환 또는 반복 deconvolution을 사용하여 컨볼 루션 프로세스를 우회하는 데는 여러 가지 방법이 있습니다. Origin 어떻게하는지 알고있는 것 같지만 절차를 이해하는 데 문제가 있습니다.
내가 알 수있는 한 반복적 인 디콘 볼 루션은 추측 한 가우스 함수로 신호를 디콘 볼루션 한 다음 결과를 피팅 한 다음 가우스를 조정하여 작동합니다.
푸리에 변환 접근법은 실제 공간에서의 컨볼 루션이 푸리에 도메인에서의 곱셈에 해당하므로 계산 시간이 단축된다는 원리에 기반합니다. 푸리에가 신호를 변환하고, 피팅하고, 푸리에 변환하는 것이 겠지요.
나는 이러한 메소드를 파이썬 numpy/scipy로 구현하는 방법에 대한 정보를 얻고 싶습니다. 반복적 인 디콘 볼 루션이 가장 쉬운 방법 인 것처럼 보이기 때문에 시작해야합니다. 다른 머리에서, 내가 읽은 것에서 푸리에 방법은 더 빠르고 신뢰할 수 있어야합니다. 그러나, 어떻게 푸리에 변환 결과에 피팅을 수행할지 모르겠다.