Python如何实现快速傅里叶变换的方法

  介绍

这篇文章主要介绍了Python如何实现快速傅里叶变换的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。

具体如下:

这里做一下记录,关于FFT就不做介绍了,直接贴上代码,有详细注释的了:

import  numpy  as  np   得到scipy.fftpack  import  fft,传输线   import  matplotlib.pyplot  as  plt   import  seaborn         #采样点选择1400个,因为设置的信号频率分量最高为600赫兹,根据采样定理知采样频率要大于信号频率2倍,所以这里设置采样频率为1400赫兹(即一秒内有1400个采样点,一样意思的)   x=np.linspace (0, 1, 1400),,      #设置需要采样的信号,频率分量有180390和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[范围(int len (x)/(2))), #由于对称性,只取一半区间      时间=xf  np.arange (len (y)),, #,频率   xf1 =xf   时间=xf2  xf(范围(int len (x)/(2))), #取一半区间         plt.subplot (221)   0:50 plt.plot (x, y) [0:50]),   plt.title (& # 39; Original 波# 39;)      plt.subplot (222)   plt.plot (xf、yf & # 39; " # 39;)   plt.title (& # 39; FFT  of  Mixed 波(two  sides  frequency 范围)& # 39;,字形大?7,颜色=& # 39;# 7 a378b& # 39;), #注意这里的颜色可以查询颜色代码表      plt.subplot (223)   plt.plot (xf1、yf1 & # 39;舌鳎# 39;)   plt.title (& # 39; FFT  of  Mixed 波(规范化)& # 39;,字形大?9,颜色=& # 39;" # 39;)      plt.subplot (224)   plt.plot (xf2、yf2 & # 39; b # 39;)   plt.title (& # 39; FFT  of  Mixed 波)& # 39;,字形大?10,颜色=& # 39;# F08080& # 39;)         plt.show ()

结果:

 Python如何实现快速傅里叶变换的方法

2017/7/11更新

再添加一个简单的例子

#, - *安康;编码:utf-8  - * -   import  matplotlib.pyplot  as  plt   import  numpy  as  np   import  seaborn            Fs  150.0=,,,,,,, #, sampling 率采样率   Ts =, 1.0/Fs;,,,, #, sampling  interval 采样区间   时间=t  np.arange (0, 1, Ts),, #, time 向量,这里Ts也是步长      ff =, 25岁,,,,,,#,frequency  of 从而信号   时间=y  np.sin (2 * np.pi * ff * t)      n =, len (y),,,,, #, length  of 从而信号   时间=k  np.arange (n)   T =n/Fs   frq =, k/T ,,,, #, two  sides  frequency 范围   时间=frq1  frq[范围(int (n/2))), #, one  side  frequency 范围      时间=YY  np.fft.fft (y),,, #,未归一化   时间=Y  np.fft.fft (y)/n ,, #, fft  computing 以及normalization 归一化   Y1 =, Y[范围(int (n/2)))      无花果,ax =, plt.subplots (4,, 1)      ax [0] .plot (t, y)   ax [0] .set_xlabel(& # 39;时间# 39;)   ax [0] .set_ylabel(& # 39;振幅# 39;)      ax [1] .plot (frq、abs (YY) & # 39; " # 39;), #, plotting 从而频谱   ax [1] .set_xlabel (& # 39; Freq  (Hz) & # 39;)   ax [1] .set_ylabel (& # 39; Y(频率)| | & # 39;)      ax [2] .plot (frq abs (Y), & # 39;舌鳎# 39;),#,plotting 从而频谱   ax [2] .set_xlabel (& # 39; Freq  (Hz) & # 39;)   ax [2] .set_ylabel (& # 39; Y(频率)| | & # 39;)      ax [3] .plot (frq1、abs (Y1) & # 39; b # 39;), #, plotting 从而频谱   ax [3] .set_xlabel (& # 39; Freq  (Hz) & # 39;)   ax [3] .set_ylabel (& # 39; Y(频率)| | & # 39;)      plt.show ()

 Python如何实现快速傅里叶变换的方法

感谢你能够认真阅读完这篇文章,希望小编分享的“Python如何实现快速傅里叶变换的方法”这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

Python如何实现快速傅里叶变换的方法