照著網路文章打:
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
https://kknews.cc/zh-tw/code/meppkp2.html
理解頻域、時域、FFT和加窗 加深對信號的認識
https://kknews.cc/news/q5b83a8.html
沒有留言:
張貼留言