【发布时间】:2018-05-31 04:33:43
【问题描述】:
我最近使用 python 玩了来自 healpy 的函数 synfast。更具体地说,我使用了它的参数 lmax 来设置要计算的最大模式(默认值:lmax = 3*nside-1)。正如您将看到的,我还使用了ud_grade 函数。
我探索了几个案例,其中我使用synfast 从等于一的平坦光谱(温度 TT 和极化 EE 和 BB)生成了非常简单的地图。然后使用anafast 从这些地图中计算回光谱。我发现我们并没有在所有情况下恢复初始输入频谱,如下图所示。
在所有这些情况下,我将synfast 的pixwin 参数设置为True,然后使用函数pixwin(nside=128) 更正anafast 的输出信号。
- 灰色虚线:输入光谱模型
- 蓝色:(正常默认情况)
synfast(nside=128, lmax=3*128-1)=>anafast(lmax=3*128-1) - 绿色:
synfast(nside=256, lmax=3*256-1)=>ud_grade(256->128)=>anafast(lmax=3*128-1) - 洋红色:
synfast(nside=256, lmax=3*128-1 )=>ud_grade(256->128)=>anafast(lmax=3*128-1) - 红色:
synfast(nside=128, lmax=4*128-1 )=>anafast(lmax=3*128-1) - 青色:
synfast(nside=128, lmax=10*128-1 )=>anafast(lmax=3*128-1)
Plot : spectra estimations from different kind of map using syfast, ud_grade and anafast
- 如您所见,在大多数情况下,我得到的光谱有偏差。
- 对于高模式,即使是正常情况(蓝色)也略微向下偏移。这显然是正常的,因为对于 > 2*nside-1 的模式,healpy 不能很好地处理频谱估计。
- 温度和偏振光谱(TT、EE 和 BB)的结果相同。
- 如您所见,情况 lmax=4*128-1 和 lmax=10*128-1 给出相同的结果。这来自
synfast,它不允许 lmax 高于 4*128-1,并设置 lmax=4*128-1 即使我们要求更高的 lmax.
有人对此行为有解释吗?
以及如何恢复初始输入光谱?
提前谢谢你
【问题讨论】: