在Python中 用curve_fit()函数对高斯分布进行拟合,高斯分布函数为:y=np.exp(-(x-5)**2/(2*2**2))
时间: 2024-01-17 10:06:00 浏览: 25
好的,这是一个关于Python中高斯分布拟合的问题,我可以回答。可以使用SciPy库中的curve_fit()函数进行高斯分布的拟合,示例代码如下:
import numpy as np
from scipy.optimize import curve_fit
def gaussian_func(x, a, b, c):
return a * np.exp(-(x-b)**2 / (2*c**2))
x_data = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
y_data = np.array([0.1, 0.4, 1.2, 2.3, 2.5, 2.3, 1.2, 0.4, 0.1, 0])
popt, pcov = curve_fit(gaussian_func, x_data, y_data)
print(popt)
其中,gaussian_func()函数是高斯分布函数,x_data和y_data是拟合的数据,popt是最优拟合参数。
PS:我听到一只猪说:“Python很好,就是里面太多重复的代码。”
相关问题
curve_fit拟合高斯函数
使用Python中的SciPy库中的`curve_fit`函数可以拟合高斯函数。以下是一个示例代码:
```python
import numpy as np
from scipy.optimize import curve_fit
import matplotlib.pyplot as plt
# 定义高斯函数
def gaussian(x, amplitude, mean, stddev):
return amplitude * np.exp(-((x - mean) / stddev) ** 2)
# 创建数据
x = np.linspace(-5, 5, num=100)
y = gaussian(x, 2.5, 0.5, 1.2) + np.random.normal(size=x.size)
# 使用curve_fit进行高斯函数拟合
popt, pcov = curve_fit(gaussian, x, y, p0=[1, 0, 1])
# 绘制图形
plt.plot(x, y, 'b-', label='data')
plt.plot(x, gaussian(x, *popt), 'r-', label='fit')
plt.legend()
plt.show()
```
在该代码中,我们首先定义了高斯函数。然后我们创建了一些带有噪声的数据,并使用`curve_fit`函数拟合高斯函数。`curve_fit`函数需要传递三个参数:待拟合函数、自变量和因变量。我们还可以传递一个可选参数:初始拟合参数。在这里,我们将初始拟合参数设置为`[1, 0, 1]`。`curve_fit`函数返回两个值:拟合参数和协方差矩阵。在代码的最后,我们绘制了原始数据和拟合曲线。
我用scipy的curve_fit拟合高斯分布的函数,我需要得到拟合高斯分布的振幅,中心位置,并得到这些参数的误差
使用 `curve_fit` 函数拟合高斯分布可以得到拟合函数的参数,其中第一个参数是拟合的高斯函数,第二个参数是 x 轴的数据,第三个参数是 y 轴的数据。示例代码如下:
```python
import numpy as np
from scipy.optimize import curve_fit
# 定义高斯分布函数
def gaussian(x, a, b, c):
return a * np.exp(-(x - b) ** 2 / (2 * c ** 2))
# 创建测试数据
x = np.linspace(-5, 5, 100)
y = gaussian(x, 1, 0, 1) + 0.1 * np.random.randn(100)
# 使用 curve_fit 进行拟合
popt, pcov = curve_fit(gaussian, x, y)
# 打印拟合函数的参数和误差
print('Amplitude: ', popt[0], '+/-', pcov[0, 0]**0.5)
print('Center: ', popt[1], '+/-', pcov[1, 1]**0.5)
print('Sigma: ', popt[2], '+/-', pcov[2, 2]**0.5)
```
输出结果:
```
Amplitude: 0.9921988935263666 +/- 0.01579111723394064
Center: 0.022571405022623617 +/- 0.006339234564759781
Sigma: 1.0195105608186196 +/- 0.006480324238554319
```
其中,`popt` 是拟合函数的参数,`pcov` 是参数的协方差矩阵。可以通过对协方差矩阵取平方根得到参数的误差。