有很多方法可以将高斯函数拟合到数据集。我经常在拟合数据时使用天文望远镜,这就是为什么我想添加这个作为额外的答案。
我使用的一些数据集应该模拟高斯噪声:将数组作为铭牌导入
从天文望远镜导入建模
m=modeling.models.Gaussian1D(振幅=10,平均值=30,标准差=5)
x=np.linspace(0,100,2000)
数据=m(x)
数据=数据NP。sqrt(数据)* NP。随机的。随机(x .尺寸)-0.5
data -=data.min()
plt.plot(x,数据)
然后拟合它实际上非常简单,您可以指定要拟合数据的模型和拟合者:钳工=建模。试衣。levmarlsqfitter()
模型=建模。模特。高斯1d()#根据数据你需要给出一些初始值
fitted_model=fitter(模型,x,数据)
并绘制:plt.plot(x,data)
plt.plot(x,拟合_模型(十))
不过,也可以只使用Scipy,但必须自己定义函数:从科学计算导入优化
def高斯(x,振幅,平均值,标准差):
返回幅度* NP。指数(-((x-均值)/4/标准偏差)* * 2)
popt,_=optimize.curve_fit(高斯,x,数据)
这将返回拟合的最佳参数,您可以这样绘制:plt.plot(x,data)
plt.plot(x,gaussian(x,*popt))
原文地址:http://www.ccttoo.com/html/1983.html
本文来自网络,不代表菜鸟教程之家立场,转载请注明出处。