人工智能之机器学习与深度学习-28

离散傅里叶变换

•法国数学家傅立叶于1807年发表了一篇论文,论文里描述运用正弦曲线来描述温度分布,论文里有个在当时具有争议性的决断:任何连续周期信号都可以由一组适当的正弦曲线组合而成。

•离散信号的频谱是周期的,周期信号的频谱是离散的。

•连续信号的频谱是非周期的,非周期信号的频谱是连续的。

离散傅里叶变换的PYTHON实现

•IMPORT NUMPY AS NP

•FROM SCIPY.FFTPACK IMPORT FFT,IFFT

•IMPORT MATPLOTLIB.PYPLOT AS PLT

•X=NP.LINSPACE(0,1,1400)     

•#设置需要采样的信号,频率分量有180,390和600

•Y=7*NP.SIN(2*NP.PI*180*X) + 2.8*NP.SIN(2*NP.PI*390*X)+5.1*NP.SIN(2*NP.PI*600*X)

•YY=FFT(Y)                     #快速傅里叶变换

•YREAL = YY.REAL               # 获取实数部分

•YIMAG = YY.IMAG               # 获取虚数部分

•YF=ABS(FFT(Y))                # 取绝对值

•YF1=ABS(FFT(Y))/LEN(X)           #归一化处理

•YF2 = YF1[RANGE(INT(LEN(X)/2))]  #由于对称性,只取一半区间

XF = NP.ARANGE(LEN(Y))        # 频率

XF1 = XF

XF2 = XF[RANGE(INT(LEN(X)/2))]  #取一半区间

#PLT.SUBPLOT(221)

PLT.PLOT(X[0:50],Y[0:50])  

PLT.TITLE('ORIGINAL WAVE')

PLT.SHOW()

#PLT.SUBPLOT(222)

PLT.PLOT(XF,YF,'R')

PLT.TITLE('FFT OF MIXED WAVE(TWO SIDES FREQUENCY RANGE)',FONTSIZE=7,COLOR='#7A378B')  #注意这里的颜色可以查询颜色代码表

PLT.SHOW()

#PLT.SUBPLOT(223)

PLT.PLOT(XF1,YF1,'G')

PLT.TITLE('FFT OF MIXED WAVE(NORMALIZATION)',FONTSIZE=9,COLOR='R')

PLT.SHOW()

猜你喜欢

转载自blog.csdn.net/weixin_44292902/article/details/86534040