python - 如何在 python 中生成洛伦兹 2D 源
问题描述
我正在尝试生成 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)
其中强度和尺寸之前已定义。我想产生洛伦兹源而不是高斯源,但我没有找到任何类似于 Gaussian2D 的东西。最好的方法是什么?
解决方案
Lorentz1D存在,虽然没有 Lorentz2D,但您可以按照实现自定义模型的指南定义一个。这是一个基本示例:
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)
我不知道这是否正是您的 2D Lorentzian 模型的定义方式;我刚刚从维基百科改编了这个定义。但是您可以根据需要修改此示例。
然后,如果您认为这对其他人有价值,您可以考虑将其作为贡献提交。
推荐阅读
- python - 天文学 RA 和 DEC 到笛卡尔坐标,然后在 2D 图像 FOV 中绘制
- r - 来自 SQL 查询的堆积密度图
- mvvm - ViewModel Async Func 完成时如何从子视图更新 EnvironmentObject
- reactjs - 如何检查路径中是否真的有图像?
- go-gorm - 是否可以在 Golang GORM 中进行无范围预加载?
- angular - 如何使用 Ng-Select 元素避免 Cypress 薄片
- r - 如何将索引保持在向量的范围内?
- c++ - 关于类中 char* 函数成员函数的问题
- python - Tkinter 按钮在函数执行期间保持按下状态
- c# - Azure 日志流对我的 Blazor .net core 3.1 应用程序根本不起作用