1
私は、scipyとpython 3.xを使ってトリオダルガウス関数を試しています。私は本当にほとんどそこにいると思うが、何がうまくいかないのか分からないので、ここで私の頭を傷つけている。python 3.xを使用してscipyから** curve_fit **関数を使用して複数のガウス関数をフィッティングする
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])
このコードを使用すると、次のエラーが発生します。
TypeError: trimodal_gauss() missing 6 required positional arguments: 'mu2', 'sigma2', 'A2', 'mu3', 'sigma3', and 'A3'
エラーメッセージの内容を理解していますが、私は6つの初期推測をどのように提供していないのか分かりません。
入力いただきありがとうございます。
ありがとうございます。私は1Dアレイを作っていなかったが、どうやってそれをやり遂げることができないのか分かりませんでした。 – user7852656