2014-11-21 493 views
0

現在,我使用Box-Muller方法在python中生成10 24個高斯隨機數。我應該繪製功率譜,並看到高斯曲線。我的代碼如下:使用Box-Muller方法在Python中生成高斯隨機數

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() 

但是,當我繪製這個,我沒有得到高斯分佈。我的問題是:爲什麼我在高斯生成的白噪聲功率譜中沒有得到高斯分佈?我是否策劃錯了什麼?先謝謝你。

回答

1

要查看高斯曲線,您需要直方圖而不是功率譜。獨立隨機變量的功率譜是均勻的(平坦的)。術語「白噪聲」本身就是一個很大的暗示 - 白光由所有頻率的等量光組成。