Healpy pix2ang如何读取像素指数?

时间:2015-04-20 16:34:57

标签: python numpy astronomy healpy

这是本课题的延续:How do HEALPix FITS files of CMB maps translate into ndarrays? What are the coordinates?

CMB地图作为FITS文件出现。该图是像素的温度值的一维矢量。

我想用Healpy的pix2ang函数来读取每个像素的位置,并知道哪个像素是哪个。

http://healpy.readthedocs.org/en/latest/generated/healpy.pixelfunc.pix2ang.html

对于这个函数,“像素索引”的输入究竟是什么?我是否必须先将每个温度值像素转换为球面谐波?

我知道在球谐函数中,每个a_lm对应于创建的FITS文件扩展名将包含一个整数列,索引= l ^ 2 + l + m + 1。但是如果没有使用l和m,像素数组呢?

1 个答案:

答案 0 :(得分:1)

它与球谐函数无关。

像素数是1d数组中的位置。所以第一个元素是像素0,第二个元素是像素1,依此类推。

在最简单的情况下,nside 1(只有12个像素)的地图:

import healpy as hp
nside = 1
npix = hp.nside2npix(1)
print("Number of pixels:")
print(npix)
m = 100 + np.arange(npix)
print("Map:")
print(m)
print("Plot map")
%matplotlib
hp.mollview(m)
print("Pixel theta (colatitude) and phi (longitude) in radians:")
i_pix = np.arange(npix)
theta, phi = hp.pix2ang(nside, i_pix)
for i in range(npix):
    print("Pixel %d : [ %.2f, %.2f ]" % (i, theta[i], phi[i]))

打印:

Pixel 0 : [ 0.84, 0.79 ]
Pixel 1 : [ 0.84, 2.36 ]
Pixel 2 : [ 0.84, 3.93 ]
Pixel 3 : [ 0.84, 5.50 ]
Pixel 4 : [ 1.57, 0.00 ]
Pixel 5 : [ 1.57, 1.57 ]
Pixel 6 : [ 1.57, 3.14 ]
Pixel 7 : [ 1.57, 4.71 ]
Pixel 8 : [ 2.30, 0.79 ]
Pixel 9 : [ 2.30, 2.36 ]
Pixel 10 : [ 2.30, 3.93 ]
Pixel 11 : [ 2.30, 5.50 ]