使用python对光谱进行lorentz峰值拟合并作图(标注峰值点位)

承接:

使用python对光谱进行lorentz峰值拟合

接下来是对图象的处理,即作图。

import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit

# 定义Lorentzian函数
def lorentzian(x, x0, A, gamma):
    return A * gamma**2 / ((x - x0)**2 + gamma**2)

# 定义双Lorentzian函数作为拟合模型
def double_lorentzian(x, x1, A1, gamma1, x2, A2, gamma2):
    return lorentzian(x, x1, A1, gamma1) + lorentzian(x, x2, A2, gamma2)

# 生成模拟的光谱数据
x_data = np.linspace(500, 700, 200)
true_params = [600, 1000, 20, 650, 800, 30]  
y_data = double_lorentzian(x_data, *true_params) + np.random.normal(0, 50, len(x_data))  

wavelength = x_data
intensity = y_data

# 进行拟合
initial_guess = [600, 1000, 20, 650, 800, 30]  
fit_params, _ = curve_fit(double_lorentzian, wavelength, intensity, p0=initial_guess)

# 绘制拟合结果
plt.plot(wavelength, intensity, label='Original Spectrum')
fit_curve = double_lorentzian(wavelength, *fit_params)
plt.plot(wavelength, fit_curve, color='red', label='Double Lorentz Fit')

# 标注峰的位置
for i in range(0, len(fit_params), 3):
    peak_position = fit_params[i]
    peak_intensity = lorentzian(peak_position, *fit_params[i:i+3])
    
    plt.plot(peak_position, peak_intensity, 'bo')  # 标注峰的位置
    
    # 绘制垂直虚线
    plt.plot([peak_position, peak_position], [0, peak_intensity], color='gray', linestyle='--')

    # 添加标签
    plt.text(peak_position, peak_intensity, f'({peak_position:.1f}, {peak_intensity:.1f})', fontsize=9, color='blue')


plt.plot(wavelength, lorentzian(wavelength, fit_params[0], fit_params[1], fit_params[2]),
         linestyle='dashed', color='green', label='Lorentz 1: ' + "{:.1f}".format(fit_params[0]))
plt.plot(wavelength, lorentzian(wavelength, fit_params[3], fit_params[4], fit_params[5]),
         linestyle='dashed', color='blue', label='Lorentz 2: ' + "{:.1f}".format(fit_params[3]))

plt.legend()
plt.xlabel('Wavelength')
plt.ylabel('Intensity')
plt.title('Double Lorentz Peak Fitting')

plt.show()

print('Fit parameters:', fit_params)

效果如图所示:

在这里插入图片描述

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Lorentz混沌模型是由荷兰物理学家Edward Lorenz所提出的一种混沌现象描述模型。混沌现象指的是一种看似无规律的、高度敏感的动态系统行为,其初始条件的微小变化能带来系统行为的巨大差异。 Lorentz混沌模型是由三个耦合的非线性微分方程组成,描述了一个简化的大气对流模型。这个模型包括了三个变量,分别是x、y、z,代表了系统状态的三个因素,如空气运动的速度和温度。这三个变量的变化以及它们之间的相互作用将决定整个模型系统的行为。 Lorentz混沌模型的特点之一是灵敏性依赖于初始条件。这意味着系统对于初始条件的微小改变是高度敏感的,即使初始条件的变化非常微小,也可能带来完全不同的系统行为。这种敏感性被称为“蝴蝶效应”,即蝴蝶在一个地方翅膀的轻微拍动可能引起在遥远地方的飓风。 Lorentz混沌模型的另一个特征是周期性。在一定的条件和参数设定下,该模型的状态变化可能在一定范围内周期性的循环。然而,这个周期性的循环并不是简单的重复,而是会产生复杂的形态和行为,这就是系统混沌的表现。 Lorentz混沌模型的发现和研究对于了解非线性动力学系统和混沌现象的本质具有重要意义。它不仅在气象学中有应用,还在其他领域如流体力学、化学反应动力学等产生了广泛影响。通过研究混沌模型,我们可以更好地理解自然界中的复杂现象,并揭示出隐藏在看似混乱背后的规律性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值