这是我第一次处理黑体辐射实验的光谱,我正在使用Python,遇到了一些麻烦……我有两个峰值和不均匀的背景噪声的光谱,我想要归一化,我尝试使用specutils 1.1“连续拟合”(文档在这里:https://specutils.readthedocs.io/en/stable/fitting.html#continuum-fitting )
我的实现是这样的:
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中的背景噪声?有没有可以只覆盖背景而忽略峰值的拟合?有什么建议吗?提前感谢!
发布于 2020-11-22 19:17:01
最后,我决定使用来自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)https://stackoverflow.com/questions/64918467
复制相似问题