首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用specutils对Python进行连续拟合

使用specutils对Python进行连续拟合
EN

Stack Overflow用户
提问于 2020-11-20 03:13:19
回答 1查看 490关注 0票数 0

这是我第一次处理黑体辐射实验的光谱,我正在使用Python,遇到了一些麻烦……我有两个峰值和不均匀的背景噪声的光谱,我想要归一化,我尝试使用specutils 1.1“连续拟合”(文档在这里:https://specutils.readthedocs.io/en/stable/fitting.html#continuum-fitting )

我的实现是这样的:

代码语言:javascript
复制
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中的背景噪声?有没有可以只覆盖背景而忽略峰值的拟合?有什么建议吗?提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-22 19:17:01

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

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

代码语言:javascript
复制
...
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64918467

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档