Python 具有Healpy的单极、偶极和四极映射

Python 具有Healpy的单极、偶极和四极映射,python,healpy,Python,Healpy,我试图用Healpy创建球谐函数的单极子(l=0,m=0)、偶极子(l=1,m=-1,0,1)和四极子(l=2,m=-2,-1,0,1,2)的映射。到目前为止,我在healpy教程的帮助下构建了这段极其简单的代码: import numpy as np import healpy as hp NSIDE=128 m=np.arange(hp.nside2npix(NSIDE)) x=hp.pixelfunc.fit_monopole(m, nest=False) y=hp.pixelfunc.

我试图用Healpy创建球谐函数的单极子(l=0,m=0)、偶极子(l=1,m=-1,0,1)和四极子(l=2,m=-2,-1,0,1,2)的映射。到目前为止,我在healpy教程的帮助下构建了这段极其简单的代码:

import numpy as np
import healpy as hp

NSIDE=128
m=np.arange(hp.nside2npix(NSIDE))
x=hp.pixelfunc.fit_monopole(m, nest=False)
y=hp.pixelfunc.fit_dipole(m, nest=False)
但这只是返回单极子(x)和单极子和偶极子(y)的值:

尝试hp.mollview(x)时,出现以下错误:

TypeError: 'float' object is not iterable

如何创建单极子和偶极子的贴图。另外,如何创建四极的贴图?

单极是贴图上的常量,因此:

m[:] = 0.1
对于偶极子和四极子,您可以:

  • 使用
    hp.pix2ang
    获取像素中心的坐标,并使用偶极子和四极子的几何定义
  • 首先创建一组具有非零偶极子或四极子的
    C\u ell

    cl = np.zeros(513, dtype=np.float)
    cl[1] = 100.
    
    然后使用
    hp.synfast(cl,nside)
    转换为映射

第一种方法是精确的,第二种方法是近似的,但更简单

你应该阅读
HEALPix入门
来更好地理解
HEALPix
的工作原理,谷歌搜索一下

cl = np.zeros(513, dtype=np.float)
cl[1] = 100.