使用Python分离两条高斯曲线可以通过以下步骤实现:
步骤1:导入必要的库和模块
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
步骤2:定义高斯函数
def gaussian(x, a, x0, sigma):
return a * np.exp(-(x - x0) ** 2 / (2 * sigma ** 2))
步骤3:生成模拟数据
x = np.linspace(-10, 10, 100)
y1 = gaussian(x, 1, -2, 1) # 第一条高斯曲线
y2 = gaussian(x, 0.5, 2, 0.5) # 第二条高斯曲线
y = y1 + y2 # 两条高斯曲线的叠加
步骤4:拟合曲线并分离两条高斯曲线
# 定义拟合函数
def fit_function(x, a1, x1, sigma1, a2, x2, sigma2):
return gaussian(x, a1, x1, sigma1) + gaussian(x, a2, x2, sigma2)
# 初始参数猜测值
initial_guess = [1, -2, 1, 0.5, 2, 0.5]
# 拟合曲线
params, _ = curve_fit(fit_function, x, y, p0=initial_guess)
# 分离两条高斯曲线
y1_fit = gaussian(x, params[0], params[1], params[2]) # 第一条高斯曲线
y2_fit = gaussian(x, params[3], params[4], params[5]) # 第二条高斯曲线
步骤5:绘制结果
plt.plot(x, y, 'b', label='Original Data')
plt.plot(x, y1_fit, 'r--', label='Gaussian 1')
plt.plot(x, y2_fit, 'g--', label='Gaussian 2')
plt.legend()
plt.xlabel('x')
plt.ylabel('y')
plt.show()
这样就可以使用Python分离两条高斯曲线了。在这个例子中,我们使用curve_fit
函数来拟合曲线并得到两条高斯曲线的参数,然后使用这些参数重新生成两条高斯曲线,并将其与原始数据一起绘制出来。
领取专属 10元无门槛券
手把手带您无忧上云