非线性最小二乘法 python_Python:具有非线性最小二乘法的双曲线高斯拟合

这篇博客介绍了如何使用Python的`scipy.optimize.leastsq`函数进行非线性最小二乘法拟合,特别是针对双曲高斯分布的数据。首先,博主创建了一个测试数据集,然后定义了残差函数,该函数结合两个高斯分布并从实际数据中减去它们。通过迭代优化找到最佳参数,最终成功拟合了数据,并用图表展示了拟合结果。
摘要由CSDN通过智能技术生成

这个代码适用于我,只要你只适合两个高斯分布的组合的函数.

我刚刚做出了一个残差函数,增加了两个高斯函数,然后从真实数据中减去它们.

我传递给Numpy最小二乘函数的参数(p)包括:第一个高斯函数(m)的平均值,与第一和第二高斯函数(dm,即水平移位)的平均值,标准偏差的第一(sd1)和第二(sd2)的标准偏差.

import numpy as np

from scipy.optimize import leastsq

import matplotlib.pyplot as plt

######################################

# Setting up test data

def norm(x, mean, sd):

norm = []

for i in range(x.size):

norm += [1.0/(sd*np.sqrt(2*np.pi))*np.exp(-(x[i] - mean)**2/(2*sd**2))]

return np.array(norm)

mean1, mean2 = 0, -2

std1, std2 = 0.5, 1

x = np.linspace(-20, 20, 500)

y_real = norm(x, mean1, std1) + norm(x, mean2, std2)

######################################

# Solving

m, dm, sd1, sd2 = [5, 10, 1, 1]

p = [m, dm, sd1, sd2] # Initial guesses for leastsq

y_init = nor

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值