2017-08-24 2 views
0

私はPythonを使用していますlmfit複数のガウスに適合するモジュール。フィッティングパラメータを互いに適合させること

def gaussian(x,a1,c1,w1,a2,w2,c2): 
     g1=a1*np.exp(-(x-c1)**2/(2*w1**2)) 
     g2=a2*np.exp(-(x-c2)**2/(2*w2**2)) 
     return g1+g2 

gmodel=Model(gaussian) 
result=gmodel.fit(y=y,x=x,params...) 

何私がしたいことは、元のパラメータを結びつけることである:私が欲しいのは例えば他のトラフ数式に一つのパラメータ、潮にあります。 a1 = a2/2となる。 lmfitパッケージでそれに行く方法はありますか?

答えて

1

はい、lmfitでは、数式を使用して、他のパラメータの値でパラメータの値を制御できます。あなたが行う可能性があります:私はちょうどここに私自身、非常に類似した質問への答えを出してきました

from lmfit.models import GaussianModel 

# create model with two Gaussians 
model = GaussianModel(prefix='g1_') + GaussianModel(prefix='g2_') 

# create parameters for composite model, but with default values: 
params = model.make_params() 

# now set starting values, boundaries, constraints 
params['g1_center'].set(5, min=1, max=7) 
params['g2_center'].set(8, min=5, max=10) 

# constrain sigma for 'g2' to be the same as for 'g1' 
params['g2_sigma'].set(expr='g1_sigma') 

# you could also do something like this: 
params['g2_amplitude'].set(expr='g1_amplitude/10.0') 

# now you're ready to fit this model to some data: 
result = model.fit(data, params, x=x) 
関連する問題