【发布时间】:2016-09-05 00:56:03
【问题描述】:
我有从一维高斯中提取的代码:
import numpy as np
from scipy.stats import norm
from scipy.optimize import curve_fit
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt
import gauss
# Beginning in one dimension:
mean = 0; Var = 1; N = 1000
scatter = np.random.normal(mean,np.sqrt(Var),N)
scatter = np.sort(scatter)
mu,sigma = norm.fit(scatter)
我使用 norm.fit() 获得 mu 和 sigma
现在我想使用
获取我的参数xdata = np.linspace(-5,5,N)
pop, pcov = curve_fit(gauss.gauss_1d,xdata,scatter)
问题是我不知道如何将我的散点(从一维高斯绘制)映射到 x 线以使用 curve_fit。
另外,假设我像之前一样简单地使用 and mu 和 sigma。
我使用:
n, bins, patches = plt.hist(scatter,50,facecolor='green')
y = 2*max(n)*mlab.normpdf(bins,mu,sigma)
l = plt.plot(bins,y,'r--')
plt.xlabel('x-coord')
plt.ylabel('Occurrences')
plt.grid(True)
plt.show()
但我必须将幅度猜测为 2*max(n)。它可以工作,但它并不健壮。不猜怎么能找到振幅?
【问题讨论】:
标签: python scipy histogram gaussian