0

根据我对量子物理学和大学数学的记忆,对于每种模式l,都存在m = l-1, l, l+1。为什么 healpix (在我的情况下,特别是healpy)球谐函数例程,例如healpy.sphtfunc.alm2map,返回相同长度的l和数组?m

4

2 回答 2

4

我想你指的是map2alm.

让我们看一个例子:

import numpy as np
import healpy as hp
m = np.arange(12) # define a map
lmax = 2
alm = hp.map2alm(m, lmax=lmax) # spherical armonic transform
print(alm)
[  1.94198894e+01 +0.00000000e+00j  -1.22780488e+01 +0.00000000e+00j
  -3.22928935e-01 +0.00000000e+00j   6.85510448e-01 -2.13069336e+00j
   4.66136940e-16 +6.36302781e-18j  -6.44680479e-01 +1.16180552e+00j]
print(alm.shape)
(6,)

alm实际上是一维向量。

如何alm索引?

l, m = hp.Alm.getlm(lmax=lmax)
print(l)
[0 1 2 1 2 2]
print(m)
[0 0 0 1 1 2]

所以,对于l = 2m[0, 1, 2]

HEALPix您可以在HEALPix入门中找到更多信息:http: //healpix.jpl.nasa.gov/pdf/intro.pdf

于 2014-09-11T21:53:56.640 回答
2

Andrea Zonca 回答中缺失的部分:

  • 对于每种模式l,范围m实际上是从-l+l2l+1它们中的一个)。但是我们正在处理真实信号,因为它的alm相反m是复共轭,所以HEALPix不存储almm<0(所以只有l+1它们)。
  • 在Andreaalm返回的数组中hp.map2alm,Andrea 的示例显示排序是先增加m再增加l。您不需要做簿记,要知道(l≥0,m≥0)数组中的索引,alm您可以使用便捷函数hp.Alm.getidx(lmax,l,m),其中lmax = hp.Alm.getlmax(len(alm)).
于 2019-07-10T03:04:28.903 回答