添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
#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() import numpy as npimport pylab as plt#import matplotlib.pyplot as pltfrom scipy.optimize import curve_fitfrom scipy import asarray as ar,expx = ar(range(10))y = ar([0,1,2,3,4,5,4,3,2,1
Python 高斯 拟合 通常我们进行 高斯 拟合 的办法是导入 scipy curve _ fit 包,不过这需要自己手写一个 高斯 分布的函数表达式,不是很方便,astropy提供了一个写好的 高斯 拟合 包 from astropy.modeling import models, fit ting import numpy as np import matplotlib.pyplot as plt 生成一个 高斯 的数据 为了检验 拟合 结果的好坏,我们先生成一个μ=0.5,σ=0.2的 高斯 数据,并赋予他一个噪
1、leastsq()与 curve _ fit () 1.1 leastsq() Python 中的leastsq()、 curve _ fit () 拟合 函数在 scipy . optimize 模块中,使用时需要导入。   leastsq()使用最小二乘方法,函数具体形式可以参考官方文档leastsq() 函数,一般我们调用的格式(其余参数默认): leastsq(func, x0, args=()) # func:误差函数 # x0: 起始估计的参数值 # arg: 拟合 的数据样本 1.2 curve _ fit ()
拟合 方法—— curve _ fit 今天来说说 curve _ fit 拟合 方法,在前面的博文中,我也介绍了其他两种 拟合 方法以及 拟合 优度的计算,有兴趣的读者可以看看: 数学建模方法—【03】 拟合 优度的计算( python 计算) 数学建模方法—【04】 拟合 方法之 np .poly fit np .poly1d 数学建模方法 — 【05】 拟合 方法之leastsq 1. 概念: curve _ fit 是使用非线性最小二乘法将函数f进行 拟合 ,寻找到最优曲线. import numpy as np import matplotlib.pyplot as plt from scipy . optimize import curve _ fit 然后,定义 高斯 函数: ``` python def gaussian(x, a, b, c): return a * np . exp (-(x - b)**2 / (2 * c**2)) 其中,参数 `a` 是 高斯 函数的峰值,参数 `b` 是 高斯 函数的中心位置,参数 `c` 是 高斯 函数的标准差。 接着,生成一些数据并添加一些噪声: ``` python xdata = np .linspace(-5, 5, 500) ydata = gaussian(xdata, 1, 0, 1) + 0.2 * np .random.normal(size=len(xdata)) 使用 ` curve _ fit ` 进行 拟合 : ``` python popt, pcov = curve _ fit (gaussian, xdata, ydata) 其中,`popt` 是 拟合 后的参数值,`pcov` 是协方差矩阵。 最后,绘制 拟合 结果: ``` python plt.plot(xdata, ydata, 'b-', label='data') plt.plot(xdata, gaussian(xdata, *popt), 'r-', label=' fit ') plt.legend() plt.show() 完整代码如下: ``` python import numpy as np import matplotlib.pyplot as plt from scipy . optimize import curve _ fit def gaussian(x, a, b, c): return a * np . exp (-(x - b)**2 / (2 * c**2)) xdata = np .linspace(-5, 5, 500) ydata = gaussian(xdata, 1, 0, 1) + 0.2 * np .random.normal(size=len(xdata)) popt, pcov = curve _ fit (gaussian, xdata, ydata) plt.plot(xdata, ydata, 'b-', label='data') plt.plot(xdata, gaussian(xdata, *popt), 'r-', label=' fit ') plt.legend() plt.show()