我需要为自旋2函数从随机$a_{\ell m}$生成一个Healpyx图(使用Healpy)。
从原理上讲,这应该是这样的:
import healpy as hp
nside = 16 # for example
for el in range(1, L+1): #loop over ell mode
for m in range(-el,el): #for each ell mode loop over m
ind = hp.sphtfunc.Alm.getidx(nside, el, m)
if m == 0:
a_lm[ind] = np.random.randn()
else:
a_lm[ind] = np.random.randn() + 1j * np.random.randn()
a_tmp = hp.sphtfunc.alm2map(a_lm, nside, pol=True)我的两个问题是:
1)如何初始化a_lm?具体地说,它的维度是什么?
a_lm = np.zeros(???)2)如果我没理解错的话,输出的a_tmp是一个一维列表。如何将其重塑为用于绘图的二维列表(地图)?
发布于 2018-03-29 07:21:14
1)您希望您的alm具有哪些属性?您也可以假设某个功率谱(C_ell)并使用hp.synalm()或hp.synfast()。
对于初始化,您已经实现了m从-ell转到+ell,因此您有一个长度为sum_0^ell [2ell+1]的一维数组。计算一下应该会给出你需要的长度。
2)对于绘图,您可以直接生成一个随机地图,然后使用例如hp.mollview(),它采用1-dimensional HEALPix地图。
或者,您可以使用hp.alm2map()将您的alm转换为map。
我还建议您查看绘图的tutorial。
https://stackoverflow.com/questions/49532723
复制相似问题