Python中的多重高斯自动拟合

Python中的多重高斯自动拟合,python,gaussian,wave,Python,Gaussian,Wave,问题是,为了尽可能精确地调整介质,我需要对所有波长峰值进行高斯拟合 我的问题是如何在不必手动指定峰值坐标的情况下自动对所有峰值进行高斯调整 为此,我实现了对最亮峰值的高斯调整,但我想将其推广到以下峰值。随后,高斯调整将允许我获得足够精细的多项式调整,以错开波长中的像素 将numpy作为np导入 从astropy.io导入拟合 将matplotlib.pyplot作为plt导入 从scipy导入插值 从TQM导入TQM 从scipy导入ndimage 进口豌豆 从scipy.optimize导入

问题是,为了尽可能精确地调整介质,我需要对所有波长峰值进行高斯拟合


我的问题是如何在不必手动指定峰值坐标的情况下自动对所有峰值进行高斯调整

为此,我实现了对最亮峰值的高斯调整,但我想将其推广到以下峰值。随后,高斯调整将允许我获得足够精细的多项式调整,以错开波长中的像素


将numpy作为np导入
从astropy.io导入拟合
将matplotlib.pyplot作为plt导入
从scipy导入插值
从TQM导入TQM
从scipy导入ndimage
进口豌豆
从scipy.optimize导入曲线\u拟合
def高斯(x,x0,amp,wid):
返回amp*np.exp(-(x-x0)/wid)**2)
def多重高斯(x,*参数):
y=np.类零(x)
对于范围内的i(0,len(params),3):
x0,amp,wid=参数[i:i+3]
y=y+gauss(x,x0,amp,wid)
返回y
neon=fits.getdata(数据目录+波形文件名+'.fits')
霓虹灯sp=np.平均值(霓虹灯,轴=0)
n_pix=len(霓虹灯)
峰值指数=峰值指数(氖指数,thres=0.05,最小距离=2)
###最亮的山峰周围的山峰
明亮指数=峰值指数[np.argmax(霓虹灯sp[峰值指数])]
delta_pix=20
ind_min=明亮指数-delta_pix
ind_max=亮度指数+增量像素
峰值选择=峰值指数[np.式中((峰值指数>最小值)和(峰值指数<最大值))]
peak_select_sort=peak_select[np.argsort(-neon_sp[peak_select])]
如果峰值选择峰值排序[1]>峰值选择峰值排序[0]:
ind_max=亮度指数+40
其他:
ind_min=明亮指数-40
峰值选择=峰值指数[np.式中((峰值指数>最小值)和(峰值指数<最大值))]
peak_select_sort=peak_select[np.argsort(-neon_sp[peak_select])]
plt.图(num=0)
plt.clf()
plt.绘图(霓虹灯)
plt.绘图(峰值指数、霓虹灯峰值指数、'r+'))
plt.绘图(峰值选择、霓虹灯sp[峰值选择]、'ro')
###高斯拟合
x=np.arange(n_pix)
xx=np.arange(0,n_pix,.1)
n_峰值=4
明亮指数拟合=np.0(n峰值)
对于范围内的i(n_峰值):
p=峰值选择排序[i]
猜测=[p,neon_sp[p],.5]
popt,pcov=曲线拟合(高斯,x,氖,p0=猜测)
拟合=高斯(xx,*popt)
明亮指数拟合[i]=popt[0]
plt.绘图(xx,拟合,'--')
明波=[703.2724.5693.0743.9]

您的问题是什么?您想知道答案的问题是什么?我的问题是如何在不必手动指定峰值坐标的情况下自动对所有峰值进行高斯调整您最好编辑您的问题,以便让任何可能知道答案的人都能更清楚地了解问题的要点。您的问题是什么您想要答案的问题?我的问题是如何在不必手动指定峰值坐标的情况下自动对我的所有峰值进行高斯调整。如果您编辑您的问题,使可能知道答案的任何人都能更清楚地了解这一点,那会更好。