2016-10-26 19 views
0

我已經搜索了一個體面的數量,但還沒有找到明確的解決方案來解決我的問題。我目前可以將高斯函數擬合到x軸上的任何數據,這是您查看高斯擬合教程時看到的典型數據集。現在我的數據在x軸上方提高了一定數量,所以我不能讓我的高斯擬合擊中x軸。我的解決方案是用一個額外的+ y0常量定義一個高斯函數。我只是不知道如何編碼!目前我有以下。需要幫助Python擬合高斯數據在y = 0時不沿x軸放置

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

我想提出的是這樣的功能是:

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

但畢竟這我怎麼改變參數的猜測和這樣的?類似於幅度,我會在p0內輸入我的猜測嗎?

編輯:我可以將我的y0設置爲一個常數值,我可以猜出這個合適的效果非常好。但這需要我每次爲每個數據集提供一個很好的猜測。這是一個工作,但一個痛苦!

任何幫助將非常感謝!

回答

0

p0是參數初始猜測的向量。所以只需附加另一個數字即可。

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

0

關於對新Y0參數的初始猜測你的問題的編輯,最小的x值應該工作。嘗試通過min(x)。