【发布时间】:2014-11-21 03:25:17
【问题描述】:
现在,我正在使用 Box-Muller 方法在 python 中生成 10 24 高斯随机数。我应该绘制功率谱,并看到一条高斯曲线。我的代码如下:
import numpy as np
import matplotlib.pyplot as plt
def fast_fourier_transform(y):
'''Return the fast Fourier transform of y.'''
Y = np.fft.fft(y)
f = np.fft.fftfreq(len(y),1.0/1024)
return f,Y
rlist=[]
for i in range((2**10)/2):
mu=0
sigma=1
u = np.random.random()
v = np.random.random()
z1 = np.sqrt(-2.0 * np.log(u)) * np.sin(2.0 * np.pi * v)
z2 = np.sqrt(-2.0 * np.log(u)) * np.cos(2.0 * np.pi * v)
x1 = mu + z1 * sigma
x2 = mu + z2 * sigma
rlist.append(x1)
rlist.append(x2)
print u, v, x1, x2
f,Y=fast_fourier_transform(rlist)
plt.plot(f,Y)
plt.show()
但是,当我绘制此图时,我没有得到高斯分布。我的问题是:为什么我在高斯生成的白噪声功率谱中没有得到高斯分布?我在策划什么错误吗?提前谢谢你。
【问题讨论】: