如何在python中生成洛伦兹2D源代码

2024-10-03 02:46:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试生成2D源并将其添加到图像中。目前我正在通过Gaussian2D(astropy)生成高斯源:

min_x = int(rapix[i]) - 300
max_x = int(rapix[i]) + 300
min_y = int(decpix[i]) - 300
max_y = int(decpix[i]) + 300
y, x = np.mgrid[min_y:max_y, min_x:max_x] #HERE I CREATE THE GRID TO PUT THE SOURCES ON

fakesource = Gaussian2D(intensity, rapix[i], decpix[i], dimension, dimension)(x, y)

其中强度和尺寸已在前面定义。我想产生洛伦兹源而不是高斯源,但我没有发现任何类似于高斯源的东西。哪种方法最好


Tags: the图像herecreatenpminmaxgrid
1条回答
网友
1楼 · 发布于 2024-10-03 02:46:06

Lorentz1D存在,尽管没有Lorentz2D,但是您可以按照implementing custom models的指南定义一个。以下是一个基本示例:

from astropy.modeling import Fittable2DModel, Parameter


class Lorentz2D(Fittable2DModel):
    amplitude = Parameter()
    x_0 = Parameter()
    y_0 = Parameter()
    fwhm = Parameter

    @staticmethod
    def evaluate(x, y, amplitude, x_0, y_0, fwhm):
        hwhm = fwhm / 2.0
        return (amplitude * hwhm /
                ((x - x_0)**2 + (y - y_0)**2 + hwhm**2)**1.5)

我不知道你的二维洛伦兹模型是否就是这样定义的;我刚从维基百科上修改了这个定义。但您可以根据需要修改此示例

那么,如果你认为这对其他人有价值,你可以考虑把它提交为contribution

相关问题 更多 >