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