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

如何在python中生成洛伦兹2D源代码,python,astropy,Python,Astropy,我正在尝试生成2D源并将其添加到图像中。目前我正在通过Gaussian2D(astropy)生成高斯源: 其中强度和尺寸已在前面定义。我想产生洛伦兹源而不是高斯源,但我没有发现任何类似于高斯源的东西。哪种方法最好?存在,尽管没有Lorentz2D,但您可以按照指南定义一种。以下是一个基本示例: 来自astropy.modeling导入Fitable2dModel,参数 Lorentz2D类(适用于2D模型): 振幅=参数() x_0=参数() y_0=参数() 半高宽=参数 @静力学方法 def

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

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

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

来自astropy.modeling导入Fitable2dModel,参数
Lorentz2D类(适用于2D模型):
振幅=参数()
x_0=参数()
y_0=参数()
半高宽=参数
@静力学方法
def评估(x,y,振幅,x_0,y_0,半高宽):
高宽=半高宽/2.0
返回(振幅*hwhm)/
((x-x_0)**2+(y-y_0)**2+hwhm**2)**1.5)
我不知道你的二维洛伦兹模型是否就是这样定义的;我刚从维基百科上修改了这个定义。但您可以根据需要修改此示例

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

,虽然没有洛伦兹2D,但是你可以定义一个遵循指南。以下是一个基本示例:

来自astropy.modeling导入Fitable2dModel,参数
Lorentz2D类(适用于2D模型):
振幅=参数()
x_0=参数()
y_0=参数()
半高宽=参数
@静力学方法
def评估(x,y,振幅,x_0,y_0,半高宽):
高宽=半高宽/2.0
返回(振幅*hwhm)/
((x-x_0)**2+(y-y_0)**2+hwhm**2)**1.5)
我不知道你的二维洛伦兹模型是否就是这样定义的;我刚从维基百科上修改了这个定义。但您可以根据需要修改此示例


那么,如果你认为这对其他人有价值,你可以考虑把它提交为.< /P>,因为你想从2D洛伦兹(或柯西)分布中抽取点,你会满意吗?我不这么认为。它只是从柯西分布中采样一个值,而我正试图有效地生成一个源,其点遵循该分布(因此我需要指定中心及其值,即1D曲线的峰值,但随后必须绘制所有其他点)。我想我得到了它。还有一件事:“[…]所以我需要指定中心和它的值,这是1D曲线的峰值[…]”你是说2D,对吗?如果我不清楚,很抱歉;我的意思是,在1D曲线中,中心代表曲线的峰值,它需要是源在2D中的中心,因为你只需要从2D洛伦兹(或柯西)分布中采样点就可以满足你了?我不这么认为;它只是从柯西分布中采样一个值,而我正试图有效地生成一个源,其点遵循该分布(因此我需要指定中心及其值,即1D曲线的峰值,但随后必须绘制所有其他点)。我想我得到了它。还有一件事:“[…]所以我需要指定中心和它的值,这是1D曲线的峰值[…]”你是说2D,对吗?如果我不清楚,很抱歉;我的意思是,在1D曲线中,中心代表曲线的峰值,它需要是源在2D中的中心

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)