我正在尝试绘制多个均值和标准差都相同的高斯图,这意味着当第一个图在20处结束时,第二个图必须从20开始并在40处结束,峰值为30 >
mu = 10
sigma = 2
n = 2
x = np.linspace(0,n*20,n*20)
for i in range(0,n):
pdf = stats.norm.pdf(x, n*mu, sigma)
plt.plot(x, pdf)
我想生成的是:
有人可以告诉我我做的错误吗?
答案 0 :(得分:1)
首先,您的两个高斯人的均值并不相同,因为一个均在10岁,另一个在30岁。
第二,您实际上是在创建一个高斯,平均值为n*mu=20
。如果您需要生成多个高斯信号,则必须多次致电norm.pdf
,例如循环中:
mus = [10,30]
sigmas = [2,2]
x = np.linspace(0,40,100)
pdf = np.zeros(shape=x.shape)
for m,s in zip(mus,sigmas):
pdf += stats.norm.pdf(x, m, s)
plt.plot(x, pdf)
答案 1 :(得分:0)
您的代码存在的问题是:
pdf = stats.norm.pdf(x, n*mu, sigma)
您正在绘制相同的pdf
,因为n
在loop
内部没有变化,您可能想使用i
而不是n
。
除非它不起作用,因为i
取值为0
和1
,因此mu
变为0
和20
,您需要还要解决。
对于通常更清洁的方法,请查看其他答案。