J'essaie d'utiliser des fonctions gaussiennes trimodales en utilisant scipy et python 3.x. Je pense que je suis vraiment presque là mais je me gratte la tête parce que je n'arrive pas à comprendre ce qui ne va pas.Ajuster plusieurs gaussiennes en utilisant la fonction ** curve_fit ** de scipy en utilisant python 3.x
data =np.loadtxt('mock.txt')
my_x=data[:,0]
my_y=data[:,1]
def gauss(x,mu,sigma,A):
return A*np.exp(-(x-mu)**2/2/sigma**2)
def trimodal_gauss(x,mu1,sigma1,A1,mu2,sigma2,A2,mu3,sigma3,A3):
return gauss(x,mu1,sigma1,A1)+gauss(x,mu2,sigma2,A2)+gauss(x,mu3,sigma3,A3)
"""""
Gaussian fitting parameters recognized in each file
"""""
first_centroid=(10180.4*2+9)/9
second_centroid=(10180.4*2+(58.6934*1)+7)/9
third_centroid=(10180.4*2+(58.6934*2)+5)/9
centroid=[]
centroid+=(first_centroid,second_centroid,third_centroid)
apparent_resolving_power=1200
sigma=[]
for i in range(len(centroid)):
sigma.append(centroid[i]/((apparent_resolving_power)*2.355))
height=[1,1,1]
p=[]
p = [list(t) for t in zip(centroid, sigma, height)]
for i in range(9):
popt, pcov = curve_fit(trimodal_gauss,my_x,my_y,p0=p[i])
En utilisant ce code, je reçois l'erreur suivante. Je comprends ce que le message d'erreur dit mais je ne pense pas comprendre comment je ne fournis pas les 6 suppositions initiales.
J'apprécie votre contribution!
Merci. J'ai réalisé que je ne faisais pas un tableau 1D mais je ne savais pas comment je pouvais le faire! – user7852656