目 录
1 概述
2 数据集网站
3 读取与处理流程
3.1 fitsread函数读取文件
3.2 画出图像
3.3 平滑滤波
3.4 傅里叶滤波
4 结果对比
附录A MATLAB读取与处理的代码
附录B Python读取光谱数据的代码
写在最后
- 1 概述
2019年3月27日,LAMOST DR6数据集正式对国内天文学家和国际合作者发布。
DR6数据集共包括4902个观测天区,发布巡天光谱总数达到1125万条,其中低分辨率光谱总数991万,中分辨率非时域光谱数据50万,中分辨率时域光谱数据84万。
数据集中高质量光谱数达到937万条,约是国际上其他巡天项目发布光谱数之和的2倍。同时,DR6发布数据中还包括一个636万组恒星光谱参数星表,成为目前全世界最大的恒星参数星表。
LAMOST巡天七年,成为世界上第一个获取光谱数突破千万量级的光谱巡天项目。
- 2 数据集网站
LAMOST的每一期数据都有各自的网站,以下展示DR6的网站。
Home - LAMOST DR6 v1.1dr6.lamost.org其网址为:http://dr6.lamost.org/,其实只需要把数字6改成其他数字就可以进去其他数据集的网站了,即:http://drX.http://lamost.org/,X=1,2,3,4,5。
网站里一般都会有醒目的“FITS Download”,就是光谱数据下载的地方。网站进去以后可能需要注册,这里以不需要注册就能下载光谱的DR4数据集为例。
进入之后出现三个选项:
- catalog(目录)
- fits(原光谱数据,fits格式)
- png(处理好的光谱图像,png格式)
点击进入fits,这才是我们需要的数据。
- 3 读取与处理流程
3.1 fitsread函数读取文件
fitsread函数是MATLAB里专门用于读取FITS格式数据的。
熟悉天文摄影的朋友应该对这个格式十分熟悉,fits不只是天文学研究中常用的文件格式,更是天文摄影照片最常见的数据格式。
data
直接调用该函数,可以直接读取主要数据数组中的数据。最终获得一个很长很长的矩阵(5x3909矩阵)。
其中,第一行是强度(或者叫Flux,通量),第三行是波长。
3.2 画出图像
3.3 平滑滤波
首先,什么是滤波?
滤波的是指滤掉不想要的成分,即为滤掉通常所说的噪声,留下想要的部分,还原数据原本的模样。以恒星光谱为例,我们想要恒星原本的光谱,但这其中会因为空间中存在很多光子的干扰,使得光谱多了很多原本不属于该恒星的特征,我们需要处理掉这些信号,还原最真实的状态,提高信噪比。
而平滑滤波,顾名思义,就是让数据变得“平滑”。空间域的平滑滤波我们一般采用平均法,就是求邻近点的平均值来达到滤波的目的。
在MATLAB中,直接调用smooth函数即可。
%平滑滤波
结果如图3-3,滤波之后特征更加明显了。
3.4 傅里叶滤波
理解傅里叶滤波需要有一定的数学基础,由于这里不是专门说傅里叶分析的文章,于是我不赘述,只是大致介绍一下。
傅里叶滤波的原理是将数据经过傅里叶变换后得到的频谱,再按照要求去除低频或高频部分,该部分通常占比小,不是数据主体,而是由噪声引起的,去掉这部分从而可达到滤波的效果。
傅里叶变换:
反傅里叶变换:
%傅里叶滤波
平滑滤波后再进行傅里叶滤波的对比如图3-4所示。
- 3.5 结果对比
最后,在调整了一些参数后的最终结果如图3-5所示。
网站中与之对应的的png格式图片是这样的:
这是一颗K型恒星光谱,粗略来看和我处理的还是差不多的,但毕竟我不是专业做天文光谱数据处理的,难免有很多不足之处,我做这些只是为了学习这方面的知识。
获取更详细的恒星光谱知识见这篇文章:
拉格朗日L2:【恒星光谱】不同恒星的谱线特征zhuanlan.zhihu.com- 附录A MATLAB读取与处理的代码
%读取fits格式光谱文件
- 附录B Python读取光谱数据的代码
以后可能会分享利用Python处理光谱数据,这里先做个铺垫。
#
- 写在最后
处理光谱数据的方法还有很多,这里只是一次学习与尝试。
本人最近在学习数字信号处理方面的知识(主要就是为了处理光谱),于是利用LAMOST数据学习了一下,希望有大佬可以批评指正,同时可以让对天文感兴趣的朋友试一试处理郭守敬望远镜的光谱。
谢谢!