高斯曲线拟合

一、高斯函数
在这里插入图片描述
a表示得到曲线的高度,b是指曲线在x轴的中心,c指width(与半峰全宽有关),图形如下:
在这里插入图片描述
高斯拟合(Gaussian Fitting)即使用形如:

Gi(x)=Ai*exp((x-Bi)2/Ci2)

的高斯函数对数据点集进行函数逼近的拟合方法。

其实可以跟多项式拟合类比起来,不同的是多项式拟合是用幂函数系,
而高斯拟合是用高斯函数系。

使用高斯函数来进行拟合,优点在于计算积分十分简单快捷。
在这里插入图片描述
在这里插入图片描述
二、多高斯拟合

import numpy as np
import pylab as plt
#import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
from scipy import asarray as ar,exp
 
x = ar(range(10))
y = ar([0,1,2,3,4,5,4,3,2,1])
 
 
def gaussian(x,*param):
    return param[0]*np.exp(-np.power(x - param[2], 2.) / (2 * np.power(param[4], 2.)))+\
           param[1]*np.exp(-np.power(x - param[3], 2.) / (2 * np.power(param[5], 2.)))
 
 
popt,pcov = curve_fit(gaussian,x,y,p0=[3,4,3,6,1,1])
print popt
print pcov
 
plt.plot(x,y,'b+:',label='data')
plt.plot(x,gaussian(x,*popt),'ro:',label='fit')
plt.legend()
plt.show()

运行结果:
在这里插入图片描述

[ 4.68035609  0.36961389  4.94329154  8.34528036  2.13310944  0.67913747]
[[ 0.03858998  0.02308755 -0.00386378  0.01181436 -0.0162972  -0.00306613]
 [ 0.02308755  0.22679753 -0.04375697 -0.0531039  -0.05173268  0.00435262]
 [-0.00386378 -0.04375697  0.04252537  0.11052757  0.03062613 -0.24351661]
 [ 0.01181436 -0.0531039   0.11052757  0.81824277  0.08714636 -0.87927837]
 [-0.0162972  -0.05173268  0.03062613  0.08714636  0.03972189 -0.20849818]
 [-0.00306613  0.00435262 -0.24351661 -0.87927837 -0.20849818  2.47203996]]

参考博客:
https://blog.csdn.net/zhangap123/article/details/76673689


版权声明:本文为Yuancccc原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。