根据我对量子物理学和大学数学的记忆,对于每种模式l,都存在m = l-1, l, l+1。为什么 healpix (在我的情况下,特别是healpy)球谐函数例程,例如healpy.sphtfunc.alm2map,返回相同长度的l和数组?m
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 = 2,m是[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到+l(2l+1它们中的一个)。但是我们正在处理真实信号,因为它的alm相反m是复共轭,所以HEALPix不存储alm值m<0(所以只有l+1它们)。 - 在Andrea
alm返回的数组中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 回答