2016-10-26 10 views
0

私はまともな量を探していて、まだ私の質問に明確な解決策を見つけていません。現在、Gaussianフィッティングのチュートリアルを見るときに表示されるデータの典型的なセットである、x軸に沿った任意のデータにガウス分布をフィットさせることができます。今私はx軸の上にある量を上げるデータを持っているので、ガウスの近似をx軸に当てることはできません。私の解決策は、+ y0の定数を追加してガウス関数を定義することです。私はちょうどこれをコード化する方法を知らない!現在私は次のことを持っています。ヘルプPython y = 0でx軸に沿っていないデータにガウス分布を当てはめる

def gaus(x,a,x0,sigma,y0): 
    return y0+a*exp(-(x-x0)**2/(2*sigma**2)) 

しかし、この後どのように私は、パラメータの推測と、このようなを変更しない:私はしたいと思い

n = len(xcut)        
mean = center       
sigma = sum(ycut*(xcut-mean)**2)/n   

def gaus(x,a,x0,sigma): 
    return a*exp(-(x-x0)**2/(2*sigma**2)) 

popt,pcov = curve_fit(gaus,xcut,ycut,p0=[45,mean,sigma]) 

Gauss Fit

はとても機能があるのですか?振幅と同様に、p0の中に私の推測を入力しますか?

編集:私はy0を私が推測できる一定の値に設定することができ、フィット感は非常に良好です。しかし、これは、私が各データセットについて毎回良い推測をする必要があります。どちらが回避策ですか、痛みです!

ご協力いただきありがとうございます。

答えて

0

p0は、パラメータの初期推測のベクトルです。それで、別の番号を付け加えてください。

popt,pcov = curve_fit(gaus,xcut,ycut,p0=[45,mean,sigma,initial_y0_guess]

0

新しいY0パラメータの初期推定上のあなたの質問の編集については、最小のxの値が動作するはずです。 min(x)を渡してみてください。

関連する問題