【问题标题】:Fast way using healpy to get convolution of a healpy map and a 2D Gaussian使用healpy获得healpy图和2D高斯卷积的快速方法
【发布时间】:2014-06-02 14:23:15
【问题描述】:

我有一个带有 nside=512 的 healpix 地图(= 巨大的 numpy.ndarray,大约 3.1E6 个元素)。我需要用 2D Gaussian 对它进行卷积。

我尝试创建高斯的 healpix 映射,将两个 numpy.ndarray 相乘并得到总和;这太慢了。

我尝试的第二件事是定义一个高斯函数(不是地图),然后定义一个二维函数,对于给定的 x,y 返回位置 x,y 处的 huge_map*gausian 的值。然后我用 scipy.integrate.nquad 得到积分。比第一种方法快,但是...

有没有办法如何使用球谐函数的展开来更快地获得 huge_map*Gaussian 的积分?像在球面伤害中扩展huge_map,在球面伤害中扩展高斯。,乘以系数,变换回来,得到总和。

并且可能的修改如下:a)使用huge_map的log和Gaussian的log,然后对系数所做的操作显然是求和。 b)以某种方式直接从系数中获得积分,而无需反向变换? c) 将扩展限制在某个数量并加快整个过程?

如何使用healpy正确实现它?

【问题讨论】:

    标签: python numpy healpy


    【解决方案1】:

    你可以尝试使用healpy.smoothing,例如:

    wmap_map_I_smoothed = hp.smoothing(wmap_map_I, fwhm=60, arcmin=True)
    hp.mollview(wmap_map_I_smoothed, min=-1, max=1, title='Map smoothed 1 deg')
    

    文档: http://healpy.readthedocs.org/en/latest/generated/healpy.sphtfunc.smoothing.html

    【讨论】:

    • 看起来你有一个实现工作,即使它很慢。你能创建一个带有嵌入图的简单示例的 IPython 笔记本,将其粘贴到 github gist 并在此处粘贴 nbviewer.ipython.org 上的链接吗?
    • 在获得了一些 healpy/healpix 的经验后,我意识到这个答案显示了要走的路,即获得 healpy 地图和 2D 高斯的卷积。
    猜你喜欢
    • 1970-01-01
    • 2018-11-02
    • 2021-10-15
    • 1970-01-01
    • 1970-01-01
    • 2011-08-27
    • 2021-07-08
    • 1970-01-01
    • 2016-08-15
    相关资源
    最近更新 更多