使用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合成波形的实例相关推荐

  1. python默认参数举例_Python中的默认参数实例分析

    本文研究的主要是Python中的默认参数的相关内容,具体如下. 熟悉C++语言的可以知道,C++语言中的默认参数是写在函数声明中的,为语法糖,与函数的调用无关,是在函数调用的时候由编译器补齐参数然后进 ...

  2. python矩阵运算_Python矩阵常见运算操作实例总结

    本文实例讲述了Python矩阵常见运算操作.分享给大家供大家参考,具体如下: python的numpy库提供矩阵运算的功能,因此我们在需要矩阵运算的时候,需要导入numpy的包. 一.numpy的导入 ...

  3. python 柱形图_python绘制双柱形图代码实例

    图表是比干巴巴的表格更直观的表达,简洁.有力.工作中经常遇到的场景是,有一些数值需要定时的监控,比如服务器的连接数.活跃用户数.点击某个按钮的人数,并且通过邮件或者网页展示出来.当我们想关注比数值本身 ...

  4. 批量梯度下降python实现_python实现梯度下降算法的实例详解

    python版本选择 这里选的python版本是2.7,因为我之前用python3试了几次,发现在画3d图的时候会报错,所以改用了2.7. 数据集选择 数据集我选了一个包含两个变量,三个参数的数据集, ...

  5. 自动轨迹绘制的python代码_python 自动轨迹绘制的实例代码

    python自动绘制轨迹怎么输入数据?#AutoTraceDraw.py import turtle as t t.title("自动轨迹绘制") t.penc自动化思维,数据和功 ...

  6. word转换pdf的python代码_python word转pdf代码实例

    原理 使用python win32 库 调用word底层vba,将word转成pdf 安装pywin32 pip install pywin32 python代码 from win32com.clie ...

  7. python段子_python 爬取 段子网 实例

    今天开始了对之前操作的代码的更改跟改错. 上期的内容中间的日期,热度,点赞数量没有爬取出来,今天做了以下修改,成功的爬取到了我们想要的内容. 改错的内容:第二行出现空值问题,显示不出来     下面是 ...

  8. 永恒python图片_python 数据词云展示实例(3)- 背景图设置

    记录wordcloud库背景图的设置及样板 之前介绍了wordcloud的基本使用wordcloud的基本使用,本文记录一下如何设置背景图. 样图 背景图 tim.jpg 生成样图 dream.png ...

  9. 奥运五环python代码_python图形绘制奥运五环实例讲解

    1. 适当的空格 逻辑行首的空白表示逻辑表示层次关系 从而决定分组 语句从新行的第一列开始 风格统一 都用四个空格 不能随便加空格 奥运五环 #绘制奥运五环 import turtle turtle. ...

最新文章

  1. linux6.5进入救援模式,rhel6.5救援模式修复系统
  2. 前端学习(2673):vite
  3. CV Code | 计算机视觉开源周报 20190603期
  4. [Android]BaseExpandableListAdapter实现可折叠列表
  5. php switch case default,switch语句中必须有default选项吗?
  6. java partialfunction,Java Relation.partialFunction方法代碼示例
  7. 基于MATLAB的夜间车牌识别处理
  8. 改进的脱机手写体汉字细化算法
  9. oracle 测试坚挺,access数据库用户依然坚挺,但是面临新的对手挑战
  10. shell进阶之tree、pstree、lsof命令详解
  11. pandas导入导出数据
  12. yyuc php,yyuc 开发手册.zip 框架 说明指南 Windows Develop 238万源代码下载- www.pudn.com...
  13. VS2010上winform打包发布、打包安装程序(超全超详细)
  14. Nginx 去除多斜杠 (//)
  15. PostgreSQL pg_stats used to estimate top N freps values and explain rows
  16. 多功能聊天室 第一次迭代总结与第二次迭代计划
  17. vo、qo、bo在spring中的位置
  18. 【bzoj4372】 烁烁的游戏【动态树分治】
  19. 深入理解Java虚拟机——加载和存储指令
  20. 用Python写了一个上课点名系统(附源码)

热门文章

  1. 【MySQL】Linux 命令启动 mysql
  2. 【阅读】《点石成金:访客至上的网页设计秘籍》读书笔记
  3. RedHat_Linux环境下防火墙配置初级入门
  4. 用并查集合并不同的集合
  5. sqlyog备份数据和导入备份数据
  6. location对象相关
  7. myeclipse上SVN代码合并详细步骤图解
  8. KlayGE 4.4中渲染的改进(三):高质量无限地形
  9. 去掉IE上的 单击以激活和使用此控件 提示
  10. 《Linux编程》学习笔记 ·000【Linux介绍】