1

根据 Healpy/Healpix 文档,我无法理解天空图中的一个像素(这是一些测量值)与 Healpyhealpy.sphtfunc.map2alm函数产生的球谐系数之间的关系,该函数计算给定地图的 a_lm 系数数组。(这个问题也适用于 anafast。)

我的理解是一个给定的像素应该对应一个球谐系数。然而,事实并非如此。完全没有。

拿一张地图nside = 8。本程序使用Healpy读取FITS格式的CMB图,手动设置nside值,读入图,显示,然后计算球谐系数。

import math
import matplotlib.pyplot as plt 
import numpy as np
import healpy as hp
import pyfits as pf

filename = "cmb_map.fits"    # the name of the full-sky map 

readmap = hp.read_map(filename)   # readmap i.e. input map
nside = 8    # manually input the side value

''' 
Here outputs: 
NSIDE = 8
ORDERING = RING in fits file
'''

view = hp.mollview(readmap)  # view the map, i.e. display it
'''
Shows sky map of the CMB
'''

totalnumberpixels = hp.nside2npix(nside)
print totalnumberpixels      # For nside = 8, this should be 12*nside**2 = 768

arr = hp.map2alm(readmap)    # This is an array of a_lm values

到目前为止,一切都很好。该hp.map2alm()函数现在返回 300 个值,即 300 个球谐系数 a_lm。

arr.shape

输出“ (300,) ”。

为什么 768 像素会计算为 300 a_lm 值?nside球谐系数和球谐系数总数之间是否存在数学关系?每个都nside给出不同数量的 a_lm 系数吗?

计算一个a_lm需要多少像素?非常感谢任何帮助/解释!


编辑:如下所述,像素总数为npix = 12*nside**2. map2alm使用默认值lmax = 3*nside-1。所以,球谐系数的总数应该是奇数之和,直到3*nside-1=23. 球谐系数的总数应该是(2*lmax+1)**2 = (6*nside-1)**2。(2*lmax+1)^2=(2*23+1)^2 = (47)^2 = 2209。那么,这个数字 300 是从哪里来的呢?究竟在map2alm做什么?这怎么可能只是一个近似值?

我预计 2209 a_lm。我算了300。

4

2 回答 2

3

像素和球谐系数之间没有直接关系。

您可以这样想象:地图像素是数据和您“拟合”到数据的球谐函数。球谐函数是无限多(正交)函数的系统。

现在,您不会将无限多的函数“拟合”到数据(像素),有限制,您设置 lmax 或 mmax 或两者兼而有之。(球谐函数通常由两个数字 l 和 m 标记/标识)。

l 和 m 是整数,l 从 0 到无穷大,对于每个 l,m 从 -m 到 m。

因此,例如,如果 lmax 为 2 并且对 m 没有限制,则您正在处理 1+3+5=9 个函数。因此,您将有 9 个 alm 系数(=“拟合”的结果),与地图有多少像素无关。

好的,到目前为止一切都很好。现在,球谐函数是复函数,系数也是。但这些地图纯粹是真实的。因此,当阅读 Sphericalharmonics(维基百科足够好)时,您会发现如何定义球谐函数的真实基础,基本上使用 Y_l,m=(-1)^m Y*_l,-m 的属性,其中star 表示复数 conj。

现在如果你用复数作为这个基函数的参数,你需要多少?对于给定的 l,您将需要 l+1 个复数(请记住,我们从 l=0 开始计数)。如果你总结给定 l 你会得到:

l=0 --> 1
l=1 --> 1+2=3
l=2 --> 1+2+3=6
l=3 --> 1+2+3+4=10
etc.

(请注意,如果将其加起来为 3*nside-1,则 nside 8 为 300)

同样重要的是要注意,对于这些复数系数中的 l+1 个,它们的虚部将为零!(对应于 Y_l0 的那些)。现在,如果您计算独立参数的数量,例如 l=3:

l=3 --> 1+2+3+4=10

所以 10 个复数 = 20 个独立参数。但是其中 4 个只有实部 20-4=16。正如人们所期望的那样,因为完整的虚数 Y_lm 有 32 个独立参数,所以实部将有一半。

于 2015-06-14T08:15:57.750 回答
0

因此,如上所述,该参数l_max决定了球谐系数的数量 a_{lm}。对于l参数,a 的数量从a_0a_{lmax}m参数由确定l_{max}, l_{max}-1, l_{max}-2, ...., -l_{max}+2, -l_{max}+1, -l_{max}

m因此,每个值的总数l由 给出2l+1,例如l=0给出 1 ml=1给出 3 ml=2给出 5m等。

map2almHealpix/Healpy 使用的函数接受输入参数nside,然后默认使用 计算球面谐波3*nside-1

但是,nside它也决定了每张地图的总像素数。总像素数npix由 给出npix = 12*nside**2

回顾:

npix = 12 * nside ** 2

l_max = 3 * nside - 1

因此,球谐系数的总数是i=0to的和级数i= 2 * lmax + 1。使用 的默认参数,这给了我们从到map2alm的总和(即)i=0i = 6 * nside - 12(3*nside-1) + 1

对于给定的地图,像素12 * nside ** 2的总数是 和球谐系数a_lm的总数是 的总和i=0 to i= 6*nside-1

正确的?

于 2015-06-15T19:33:55.977 回答