2014-12-02 44 views
1

我有問題,理解matplotlib的magnitude_spectrum函數調用產生的輸出。理解matplotlib magnitude_spectrum輸出

我已經產生具有50kHz的頻率的正弦,

f_s = 488000.0 # Hz 
t = np.arange(0.0, 1.0, 1/f_s) 
s1 = 100*np.sin(2*np.pi*50000*t) 

我然後繪製所得的幅度譜,由FFT單元

s1_magspec = plt.magnitude_spectrum(s1,Fs=f_s) 
plt.plot(s1_magspec[0]/len(s1_magspec[0])) 

結果數除後是在一個單一的尖峯50khz,但幅度爲50,而不是預期的100.

任何人都可以解釋爲什麼這是?

這裏是一個IPython的筆記本描述顯示afforementioned代碼的鏈接,並將所得的情節:

http://nbviewer.ipython.org/gist/bkinman/22cc15d3ad3b9b2db09e

回答

0

它看起來像它具有與所使用的FFT窗口中的默認設置做。該文件說默認是漢寧窗口。如果你使用boxcar窗口代替:

s1_magspec = plt.magnitude_spectrum(s1, Fs=f_s, window=np.ones(s1.shape)) 

你會得到你的高峯在100,就像一個直的numpy FFT。

順便說一句,如果你編輯你的問題放在創建s1_magspec的代碼行中,而不是依靠筆記本查看器,那麼鏈接無疑會在某一天中斷。

+0

謝謝!看來你確實是對的!我已經完成了你所要求的編輯。 – 2014-12-07 19:23:26