介绍
这篇文章主要介绍了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 ()
结果:
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如何实现快速傅里叶变换的方法”这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!