中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用python實現的FFT代碼示例

發布時間:2021-04-06 10:28:45 來源:億速云 閱讀:541 作者:小新 欄目:開發技術

小編給大家分享一下使用python實現的FFT代碼示例,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

FFT是DFT的高效算法,能夠將時域信號轉化到頻域上,具體內容如下

# encoding=utf-8

import numpy as np
import pylab as pl # 導入和matplotlib同時安裝的作圖庫pylab


sampling_rate = 8000 # 采樣頻率8000Hz
fft_size = 512  # 采樣點512,就是說以8000Hz的速度采512個點,我們獲得的數據只有這512個點的對應時刻和此時的信號值。
t = np.linspace(0, 1, sampling_rate)  # 截取一段時間,截取是任意的,這里取了0~1秒的一段時間。

x = np.sin(2*np.pi*156.25*t) + 2*np.sin(2*np.pi*234.375*t) # 輸入信號序列,人工生成了一段信號序列,范圍在0~1秒
xs = x[:fft_size]  # 由上所述,我們只采樣了512個點,所以我們只獲得了前512個點的數據
xf = np.fft.rfft(xs)/fft_size # 調用np.fft的函數rfft(用于實值信號fft),產生長度為fft_size/2+1的一個復數向量,分別表示從0Hz~4000Hz的部分,這里之所以是4000Hz是因為Nyquist定理,采樣頻率8000Hz,則能恢復帶寬為4000Hz的信號。最后/fft_size是為了正確顯示波形能量

freqs = np.linspace(0, sampling_rate//2, fft_size//2 + 1) # 由上可知,我們得到了數據,現在產生0~4000Hz的頻率向量,方便作圖
xfp = 20*np.log10(np.clip(np.abs(xf), 1e-20, 1e1000)) # 防止幅值為0,先利用clip剪裁幅度,再化成分貝

pl.figure(figsize=(8, 4)) # 生成畫布
pl.subplot(211) # 生成子圖,211的意思是將畫布分成兩行一列,自己居上面。
pl.plot(t[:fft_size], xs) # 對真實波形繪圖
pl.xlabel(u"time(s)")
pl.title(u"The Wave and Spectrum of 156.25Hz and 234.375Hz")
pl.subplot(212) # 同理
pl.plot(freqs, xfp) # 對頻率和幅值作圖,xlabel是頻率Hz,ylabel是dB
pl.xlabel(u"Hz")
pl.subplots_adjust(hspace=0.4) # 調節繪圖參數
pl.show()

代碼進行了詳細標注。有一個小細節是FFT對于取樣時間有要求。N點FFT進行精確頻譜分析的要求是N個取樣點包含整數個取樣對象的波形。因此N點FFT能夠完美計算頻譜,對取樣對象的要求是n*Fs/N(n*采樣頻率/FFT長度)在本例中Fs = 8000Hz,N=512 base_freq=15.625Hz 所以本例中給出了頻率為156.25Hz(n=10)和234.375Hz(n=15)做例子。

效果如下:

使用python實現的FFT代碼示例

看完了這篇文章,相信你對“使用python實現的FFT代碼示例”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

偃师市| 莎车县| 伊春市| 商洛市| 扎兰屯市| 武宁县| 沅陵县| 江安县| 贵溪市| 忻州市| 峨眉山市| 化州市| 凉山| 宝清县| 方城县| 江口县| 康平县| 洮南市| 安新县| 乐亭县| 德惠市| 阿鲁科尔沁旗| 东方市| 正安县| 那坡县| 田林县| 宜黄县| 桐庐县| 怀柔区| 汽车| 鄂尔多斯市| 湘乡市| 友谊县| 淳安县| 克拉玛依市| 吐鲁番市| 康乐县| 伊川县| 滦平县| 县级市| 徐水县|