Python实现快速傅里叶变换的方法(FFT)


Posted in Python onJuly 21, 2018

本文介绍了Python实现快速傅里叶变换的方法(FFT),分享给大家,具体如下:

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

import numpy as np
from scipy.fftpack import fft,ifft
import matplotlib.pyplot as plt
import seaborn


#采样点选择1400个,因为设置的信号频率分量最高为600赫兹,根据采样定理知采样频率要大于信号频率2倍,所以这里设置采样频率为1400赫兹(即一秒内有1400个采样点,一样意思的)
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.subplot(222)
plt.plot(xf,yf,'r')
plt.title('FFT of Mixed wave(two sides frequency range)',fontsize=7,color='#7A378B') #注意这里的颜色可以查询颜色代码表

plt.subplot(223)
plt.plot(xf1,yf1,'g')
plt.title('FFT of Mixed wave(normalization)',fontsize=9,color='r')

plt.subplot(224)
plt.plot(xf2,yf2,'b')
plt.title('FFT of Mixed wave)',fontsize=10,color='#F08080')


plt.show()

结果:

Python实现快速傅里叶变换的方法(FFT)

2017/7/11更新

再添加一个简单的例子

# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
import numpy as np
import seaborn



Fs = 150.0;     # sampling rate采样率
Ts = 1.0/Fs;    # sampling interval 采样区间
t = np.arange(0,1,Ts)  # time vector,这里Ts也是步长

ff = 25;     # frequency of the signal
y = np.sin(2*np.pi*ff*t)

n = len(y)     # length of the signal
k = np.arange(n)
T = n/Fs
frq = k/T     # two sides frequency range
frq1 = frq[range(int(n/2))] # one side frequency range

YY = np.fft.fft(y)   # 未归一化
Y = np.fft.fft(y)/n   # fft computing and normalization 归一化
Y1 = Y[range(int(n/2))]

fig, ax = plt.subplots(4, 1)

ax[0].plot(t,y)
ax[0].set_xlabel('Time')
ax[0].set_ylabel('Amplitude')

ax[1].plot(frq,abs(YY),'r') # plotting the spectrum
ax[1].set_xlabel('Freq (Hz)')
ax[1].set_ylabel('|Y(freq)|')

ax[2].plot(frq,abs(Y),'G') # plotting the spectrum
ax[2].set_xlabel('Freq (Hz)')
ax[2].set_ylabel('|Y(freq)|')

ax[3].plot(frq1,abs(Y1),'B') # plotting the spectrum
ax[3].set_xlabel('Freq (Hz)')
ax[3].set_ylabel('|Y(freq)|')

plt.show()

Python实现快速傅里叶变换的方法(FFT)

相关文章:傅立叶级数展开初探(Python)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python Sleep休眠函数使用简单实例
Feb 02 Python
python统计文本字符串里单词出现频率的方法
May 26 Python
Python实现的井字棋(Tic Tac Toe)游戏示例
Jan 31 Python
Python生成器定义与简单用法实例分析
Apr 30 Python
Python多重继承的方法解析执行顺序实例分析
May 26 Python
Python迭代器与生成器基本用法分析
Jul 26 Python
Python3.7 dataclass使用指南小结
Feb 22 Python
Python二叉树的镜像转换实现方法示例
Mar 06 Python
Python 使用 Pillow 模块给图片添加文字水印的方法
Aug 30 Python
利用 Flask 动态展示 Pyecharts 图表数据方法小结
Sep 04 Python
Python面向对象程序设计之静态方法、类方法、属性方法原理与用法分析
Mar 23 Python
Anaconda配置pytorch-gpu虚拟环境的图文教程
Apr 16 Python
Python实现获取本地及远程图片大小的方法示例
Jul 21 #Python
opencv python 傅里叶变换的使用
Jul 21 #Python
Numpy中的mask的使用
Jul 21 #Python
Flask框架使用DBUtils模块连接数据库操作示例
Jul 20 #Python
Flask框架WTForm表单用法示例
Jul 20 #Python
Python使用pymongo模块操作MongoDB的方法示例
Jul 20 #Python
Python闭包函数定义与用法分析
Jul 20 #Python
You might like
php socket通信简单实现
2016/11/18 PHP
PHP实现对xml的增删改查操作案例分析
2017/05/19 PHP
Laravel框架Eloquent ORM简介、模型建立及查询数据操作详解
2019/12/04 PHP
jQuery TextBox自动完成条
2009/07/22 Javascript
JavaScript的Polymer框架中dom-repeat与VM的相关操作
2015/07/29 Javascript
Bootstrap每天必学之标签与徽章
2015/11/27 Javascript
thinkphp实现无限分类(使用递归)
2015/12/19 Javascript
Web打印解决方案之证件套打的实现思路
2016/08/29 Javascript
js中用cssText设置css样式的简单方法
2016/09/19 Javascript
在Vue中使用axios请求拦截的实现方法
2018/10/25 Javascript
小程序实现单选多选功能
2018/11/04 Javascript
Easyui 去除jquery-easui tab页div自带滚动条的方法
2019/05/10 jQuery
jQuery实现消息弹出框效果
2019/12/10 jQuery
如何在JavaScript中等分数组的实现
2020/12/13 Javascript
python算法学习之桶排序算法实例(分块排序)
2013/12/18 Python
对于Python的Django框架使用的一些实用建议
2015/04/03 Python
python GUI实例学习
2017/11/21 Python
Python3实现的简单工资管理系统示例
2019/03/12 Python
Python3实现zip分卷压缩过程解析
2019/10/09 Python
一款超酷的js+css3实现的3D标签云特效兼容ie7/8/9
2013/11/18 HTML / CSS
纯CSS3打造属于自己的“小黄人”
2016/03/14 HTML / CSS
css3 边框、背景、文本效果的实现代码
2018/03/21 HTML / CSS
迪卡侬印度官网:购买所有体育用品
2017/06/24 全球购物
伦敦一家领先的精品零售商:IRIS Fashion
2019/05/24 全球购物
意大利顶级奢侈品电商:LUISAVIAROMA(支持中文)
2020/05/26 全球购物
数学专业推荐信范文
2013/11/21 职场文书
会计自荐信范文
2014/03/09 职场文书
幼儿园毕业寄语
2014/04/03 职场文书
校企合作协议书
2014/04/16 职场文书
离婚协议书怎么写
2014/09/12 职场文书
农村党支部书记党群众路线四风问题整改措施
2014/09/26 职场文书
2015年酒店前台工作总结
2015/04/20 职场文书
社区敬老月活动总结
2015/05/07 职场文书
教师外出学习心得体会
2016/01/18 职场文书
4种方法python批量修改替换列表中元素
2022/04/07 Python
超越Nginx的Web服务器caddy优雅用法
2022/06/21 Servers