现在,我正在使用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()
然而,当我绘制这个时,我没有得到高斯分布。我的问题是:为什么我的高斯生成的白噪声功率谱中没有得到高斯分布?我是否在策划错误?提前谢谢。
答案 0 :(得分:1)
要查看高斯曲线,您需要直方图而不是功率谱。独立随机变量的功率谱是均匀的(平坦的)。术语“白噪声”本身就是一个很大的暗示 - 白光在所有频率下由等量的光组成。