【问题标题】:Fitting voigt profiles to emission lines将 voigt 轮廓拟合到发射线
【发布时间】:2021-01-08 22:31:35
【问题描述】:

我正在尝试使用 scipy.optimize.curve_fit 将 Voigt 配置文件拟合到发射线光谱。

  1. 我不明白如何定义初始猜测
  2. 数据包含多个合并在一起的发射线。我还想对数据进行反卷积。

谁能告诉我如何定义初始猜测以及如何对发射线进行反卷积。我对中间那个感兴趣。

the data fitted with voigt

这是我的单 Voigt 轮廓拟合代码

#initial guesses
amp1 = max(y)
amp2 = max(y)
cen1 = 6565
cen2 = 6565
sigma = 10
wid = max(x) - min(x)
def voigt(x, amp1, cen1, sigma, amp2, cen2, wid):
    return (amp1*(1/(sigma*(np.sqrt(2*np.pi))))*(np.exp(-((x-cen1)**2)/((2*sigma)**2)))) +\
              ((amp2*wid**2/((x-cen2)**2+wid**2)) )
              
popt_voigt,pcov_voigt=scipy.optimize.curve_fit(voigt, x, y, p0 = [amp1,cen1,sigma,amp2,cen2,wid])
perr_voigt = np.sqrt(np.diag(pcov_voigt))

【问题讨论】:

  • 请注意,有scipy.special.voigt_profile,因此您不需要近似值。 (如果在您的版本中不可用,您可以通过 Faddeeva 功能)其次,由于有多个峰,您需要一个可以处理多个峰的包装器(它是固定的,n=3 还是可变的?)。最后,您应该从scipy.signal.find_peaks 开始获取峰值位置。它还有助于猜测高度。
  • 你可能也想看看here
  • 我后来意识到它有更多的峰值。因此代码没有正确执行拟合。感谢您指出。

标签: python curve-fitting astronomy spectrum spectra


【解决方案1】:

一般来说,固定 Voigt 配置文件的最大宽度是个好主意,特别是当它们之间存在重叠时。为此,例如使用参数“bounds”。 奖励:为了帮助 scipy 在拟合过程中,您可以尝试规范化您的数据并减少背景here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-20
    • 1970-01-01
    • 1970-01-01
    • 2021-07-26
    • 2013-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多