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