healpy.sphtfunc.map2alm
Healpy/Healpix のドキュメントに基づくと、天空図の 1 つのピクセル (測定値) と、特定のマップの a_lm 係数の配列を計算するHealpy の関数によって生成される球面調和係数との関係を理解できません。(この質問はアナファストにも当てはまります。)
私の理解では、特定のピクセルは球面調和係数に対応する必要があります。しかし、そうではありません。まったく。
で地図を取るnside = 8
。このプログラムは、Healpy を使用して CMB マップを FITS 形式で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
ここまでは順調ですね。関数は 300 個のhp.map2alm()
値、つまり 300 個の球面調和係数 a_lm を返します。
arr.shape
" (300,) " を出力します。
768 ピクセルが 300 の a_lm 値に計算されるのはなぜですか? nside
と球面調和係数の総数との間に数学的な関係はありますか? それぞれnside
が異なる数の a_lm 係数を与えますか?
1 つの 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と計算しました。