1
我試圖用Scipy curve_fit將我的數據擬合成高斯。不幸的是,curve_fit返回1,1,1。我對Scipy curve_fit的使用似乎效果不好
Kp4=fnamer4[615:645]
xk=np.arange(0,1024,1)[615:645]
def func(x, a, x0, sigma):
return a*np.exp(-(x-x0)**2/(2*sigma**2))
popt, pcov = curve_fit(func, xk, Kp4)
print (popt)
Kp4_fit= func(xk, popt[0], popt[1], popt[2])
plt.plot(xk, Kp4_fit, 'r',xk, Kp4, 'bs')
KP4等於
>>> Kp4
array([23, 27, 20, 26, 22, 22, 26, 29, 32, 19, 34, 26, 29, 24, 32, 41, 27,
39, 33, 30, 30, 30, 26, 39, 30, 21, 17, 16, 17, 14])
打印POPT的輸出是[ 1. 1. 1.]
我以前也試過很多不同的數據curve_fit,它工作得很好。也許問題是curve_fit不能適應高斯函數的數據?! 感謝您的幫助。
我使用的curve_fit的概念是基於一個例子,從波紋管鏈接: http://python4esac.github.io/fitting/examples1d.html
如果答案適用於您,請將其標記爲[如此處所述](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)解決。因此,其他用戶會認識到a)問題已解決,b)解決方案的外觀如何。謝謝! – jkalden 2014-11-24 10:13:34
感謝您的幫助jaklden – icypy 2014-11-24 19:05:50