根据我对量子物理和大学数学的记忆,对于每一种模式的l,都存在着m = l-1, l, l+1。为什么疗愈(特别是健康)球面调和例程,例如healpy.sphtfunc.alm2map,返回长度相同的l和m数组?
发布于 2014-09-11 21:53:56
我认为你指的是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
发布于 2019-07-10 03:04:28
Andrea Zonca的回答中缺失的部分是:
l,m的范围实际上是从-l到+l (所以它们的2l+1 )。但是我们处理的是真实信号,对于相反的alm,m是复杂的共轭,因此HEALPix不存储m<0的alm值(因此只有l+1 )。alm返回的hp.map2alm数组中,Andrea的示例表明排序是通过增加m然后增加l。您不需要进行簿记,要知道数组(l≥0,m≥0)中的alm索引,可以使用方便函数hp.Alm.getidx(lmax,l,m),其中是lmax = hp.Alm.getlmax(len(alm))。https://stackoverflow.com/questions/25795675
复制相似问题