fft python 举例_Python FFT合成波形的实例
使用Python numpy模块带的FFT函数合成矩形波和方波,增加对离散傅里叶变换的理解。
导入模块 import numpy as np
import matplotlib.pyplot as plt
分别是产生一个周期的方波和三角波程序 # 产生size点取样的三角波,其周期为1
def triangle_wave(size):
x = np.arange(0, 1, 1.0/size)
y = np.where(x<0.5, x, 0)
y = np.where(x>=0.5, 1-x, y)
return x, y
def square_wave(size):
x = np.arange(0, 1, 1.0/size)
y = np.where(x<0.5, 1.0, 0)
return x, y
其中np.where函数第二个值是if,第三个是else
下面程序可以计算对应的频谱,采样点数取为2的n次幂是为了便于FFT计算 fft_size = 256
# 计算三角波和其FFT
x, y = triangle_wave(fft_size)
fy = np.fft.fft(y) / fft_size
下面对计算的频谱进行可视化,频率对应的强度使用工程上常用的分贝dp来表示 # 绘制三角波的FFT的前20项的振幅,由于不含下标为偶数的值均为0, 因此取
# log之后无穷小,无法绘图,用np.clip函数设置数组值的上下限,保证绘图正确
plt.figure()
plt.plot(np.clip(20*np.log10(np.abs(fy[:20])), -120, 120), "o")
plt.xlabel("frequency bin")
plt.ylabel("power(dB)")
plt.title("FFT result of triangle wave")
下面用正弦和余弦函数合成信号 # 取FFT计算的结果freqs中的前n项进行合成,返回合成结果,计算loops个周期的波形
def fft_combine(freqs, n, loops=1):
length = len(freqs) * loops
data = np.zeros(length)
index = loops * np.arange(0, length, 1.0) / length * (2 * np.pi)
for k, p in enumerate(freqs[:n]):
if k != 0: p *= 2 # 除去直流成分之外,其余的系数都*2
data += np.real(p) * np.cos(k*index) # 余弦成分的系数为实数部
data -= np.imag(p) * np.sin(k*index) # 正弦成分的系数为负的虚数部
return index, data
其中index代表频谱空间的采样点
画出合成信号,x坐标使用默认的整数表示即可 # 绘制原始的三角波和用正弦波逐级合成的结果,使用取样点为x轴坐标
plt.figure()
plt.plot(y, label="original triangle", linewidth=2)
for i in [0,1,3,5,7,9]:
index, data = fft_combine(fy, i+1, 2) # 计算两个周期的合成波形
plt.plot(data, label = "N=%s" % i)
plt.legend()
plt.title("partial Fourier series of triangle wave")
plt.show()
以上这篇Python FFT合成波形的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持聚米学院。
fft python 举例_Python FFT合成波形的实例相关推荐
- python默认参数举例_Python中的默认参数实例分析
本文研究的主要是Python中的默认参数的相关内容,具体如下. 熟悉C++语言的可以知道,C++语言中的默认参数是写在函数声明中的,为语法糖,与函数的调用无关,是在函数调用的时候由编译器补齐参数然后进 ...
- python矩阵运算_Python矩阵常见运算操作实例总结
本文实例讲述了Python矩阵常见运算操作.分享给大家供大家参考,具体如下: python的numpy库提供矩阵运算的功能,因此我们在需要矩阵运算的时候,需要导入numpy的包. 一.numpy的导入 ...
- python 柱形图_python绘制双柱形图代码实例
图表是比干巴巴的表格更直观的表达,简洁.有力.工作中经常遇到的场景是,有一些数值需要定时的监控,比如服务器的连接数.活跃用户数.点击某个按钮的人数,并且通过邮件或者网页展示出来.当我们想关注比数值本身 ...
- 批量梯度下降python实现_python实现梯度下降算法的实例详解
python版本选择 这里选的python版本是2.7,因为我之前用python3试了几次,发现在画3d图的时候会报错,所以改用了2.7. 数据集选择 数据集我选了一个包含两个变量,三个参数的数据集, ...
- 自动轨迹绘制的python代码_python 自动轨迹绘制的实例代码
python自动绘制轨迹怎么输入数据?#AutoTraceDraw.py import turtle as t t.title("自动轨迹绘制") t.penc自动化思维,数据和功 ...
- word转换pdf的python代码_python word转pdf代码实例
原理 使用python win32 库 调用word底层vba,将word转成pdf 安装pywin32 pip install pywin32 python代码 from win32com.clie ...
- python段子_python 爬取 段子网 实例
今天开始了对之前操作的代码的更改跟改错. 上期的内容中间的日期,热度,点赞数量没有爬取出来,今天做了以下修改,成功的爬取到了我们想要的内容. 改错的内容:第二行出现空值问题,显示不出来 下面是 ...
- 永恒python图片_python 数据词云展示实例(3)- 背景图设置
记录wordcloud库背景图的设置及样板 之前介绍了wordcloud的基本使用wordcloud的基本使用,本文记录一下如何设置背景图. 样图 背景图 tim.jpg 生成样图 dream.png ...
- 奥运五环python代码_python图形绘制奥运五环实例讲解
1. 适当的空格 逻辑行首的空白表示逻辑表示层次关系 从而决定分组 语句从新行的第一列开始 风格统一 都用四个空格 不能随便加空格 奥运五环 #绘制奥运五环 import turtle turtle. ...
最新文章
- linux6.5进入救援模式,rhel6.5救援模式修复系统
- 前端学习(2673):vite
- CV Code | 计算机视觉开源周报 20190603期
- [Android]BaseExpandableListAdapter实现可折叠列表
- php switch case default,switch语句中必须有default选项吗?
- java partialfunction,Java Relation.partialFunction方法代碼示例
- 基于MATLAB的夜间车牌识别处理
- 改进的脱机手写体汉字细化算法
- oracle 测试坚挺,access数据库用户依然坚挺,但是面临新的对手挑战
- shell进阶之tree、pstree、lsof命令详解
- pandas导入导出数据
- yyuc php,yyuc 开发手册.zip 框架 说明指南 Windows Develop 238万源代码下载- www.pudn.com...
- VS2010上winform打包发布、打包安装程序(超全超详细)
- Nginx 去除多斜杠 (//)
- PostgreSQL pg_stats used to estimate top N freps values and explain rows
- 多功能聊天室 第一次迭代总结与第二次迭代计划
- vo、qo、bo在spring中的位置
- 【bzoj4372】 烁烁的游戏【动态树分治】
- 深入理解Java虚拟机——加载和存储指令
- 用Python写了一个上课点名系统(附源码)