用python进行高斯拟合

2024-06-16 09:05:44 发布

您现在位置:Python中文网/ 问答频道 /正文

你好,如果这是一个noob问题,我道歉。我是python新手。我试图在我的数据集上拟合一条高斯曲线,但我不确定哪里出了问题。我正在遵循我在网上找到的一些例子,但它不起作用。请检查图像以查看输出中发生了什么

fit is just coming as straight line 我将数据保存在excel中,并按如下方式导入:

import numpy as np
from scipy.optimize import curve_fit
import pandas as pd

df = pd.read_csv(r'C:\Users\B.d\Documents\interpolate, matplotlib and other example tutorials\ExtendedAxialString4.csv')

x =df.iloc[:,0] #position

y =df.iloc[:,1]   #value 

#then for the gaussian

n = len(x)

mean = sum(x*y)/n                  

sigma = sum(y*(x-mean)**2)/n       


def gaus(x,a,x0,sigma):

    return a*exp(-(x-x0)**2/(2*sigma**2))

popt,pcov = curve_fit(gaus,x,y,p0=[1,mean,sigma])

#plt.title('Gaussian fit,  $f(x) = A e^{(-(x-x_0)^2/(2sigma^2))}$')


plt.plot(x,y,'b+:',label='data')

plt.plot(x,gaus(x,*popt),'ro:',label='fit')

plt.legend()

plt.title('Fig. 3 - Axial deformation')

plt.xlabel('numbering')

plt.ylabel('deformation(mm)')

plt.show() 

Tags: csv数据importdfaspltmeansigma