2020年10月25日 星期日

[python]學習FFT

 照著網路文章打:

import numpy as np

import pylab as pl

sampling_rate=8000

fft_size=512

t=np.arange(0,1,1.0/sampling_rate)

x=np.sin(2*np.pi*156.25*t)+2*np.sin(2*np.pi*234.375*t)

xs=x[:fft_size]

xf=np.fft.rfft(xs)/fft_size

freqs=np.linspace(0,sampling_rate/2,fft_size/2+1)

xfp=20*np.log10(np.clip(np.abs(xf),1e-20,1e1000))


pl.figure(figsize=(8,4))

pl.subplot(211)

pl.plot(t[:fft_size],xs)

pl.xlabel(u"time(sec)")

pl.title(u"The Wave and Spectrum 156.25Hz 234.375Hz")

pl.subplot(212)

pl.plot(freqs,xfp)

pl.xlabel(u"Hz")

pl.subplots_adjust(hspace=0.4)

pl.show()



不錯的文章:

基於Python的數位訊號處理初步
https://kknews.cc/zh-tw/code/meppkp2.html

理解頻域、時域、FFT和加窗 加深對信號的認識
https://kknews.cc/news/q5b83a8.html



沒有留言:

張貼留言