Continuum Fitting with Python using specutils



这是我第一次处理黑体辐射实验的光谱,我正在使用Python,遇到了一些问题。。。我有这个具有2个峰值和不均匀背景噪声的光谱,我想将其归一化;连续拟合";(此处的文档:https://specutils.readthedocs.io/en/stable/fitting.html#continuum-配件(

我的实现是:

import matplotlib.pyplot as plt import numpy as np 
from astropy.modeling import models
from astropy import units as u
from specutils.spectra import Spectrum1D, SpectralRegion
from specutils.fitting import fit_generic_continuum
...
x = data[:, 0]
y = data[:, 1]
plt.plot(x, y, label = 'My Data', c='C0')
spectrum = Spectrum1D(flux=y*u.Jy, spectral_axis=x*u.um)
g1_fit = fit_generic_continuum(spectrum)
y_fit = g1_fit(x*u.um)
plt.plot(x, y_fit, label = ' Specutils Continuum Fit', c='C1')
plt.legend()

但结果有些令人失望,它没有反映出背景信号。

https://i.stack.imgur.com/El0pc.png

我做错什么了吗?你有其他方法来规范python中的背景噪声吗?任何只覆盖背景而忽略峰值的拟合?有什么建议吗?提前感谢!

最后,我决定使用scipy(medfilt(的中值滤波器,并使用足够高的内核,它完全去除了尖峰。

我的specutils实现的问题是,我需要通过这样做来排除频谱窗口中的峰值,尽管我发现这太难在我的100-120数据测量中实现:

...
from specutils import SpectralRegion
spectrum = Spectrum1D(flux=y*u.Jy, spectral_axis=x*u.um)
g1_fit = fit_generic_continuum(spectrum, exclude_regions=[SpectralRegion(2 * u.um, 6 * u.um), SpectralRegion(58 * u.um, 65 * u.um)])
y_fit = g1_fit(x*u.um)

最新更新