import numpy as np#导入一个数据处理模块

import matplotlib.pyplot as plt#导入一个绘图模块

# 依据快速傅里叶算法得到信号的频域

def test_fft():

sampling_rate = 8192 # 采样率

fft_size = 8192 # FFT取样长度

t = np.arange(0, 8.192, 1.0 / sampling_rate)

#np.arange(起点,终点,间隔)产生8.192s长的取样时间

x=0.6*np.sin(2*np.pi*500*t)+0.6*np.sin(2*np.pi*50*t)

# 两个正弦波叠加,500HZ和50HZ

# N点FFT进行精确频谱分析的要求是N个取样点包含整数个取样对象的波形。

# 因此N点FFT能够完美计算频谱对取样对象的要求是n*Fs/N(n*采样频率/FFT长度),

# 因此对8KHZ和512点而言,完美采样对象的周期最小要求是8000/512=15.625HZ,

# 所以156.25的n为10,234.375的n为15。

xs = x[:fft_size]# 从波形数据中取样fft_size个点进行运算

xf = np.fft.rfft(xs) / fft_size # 返回fft_size/2+1 个频率

#利用np.fft.rfft()进行FFT计算,rfft()是为了更方便对实数信号进行变换,

# 由公式可知 / fft_size为了正确显示波形能量

# rfft函数的返回值是N/2+1个复数,分别表示从0(Hz)到sampling_rate/2(Hz)的分。

# 于是可以通过下面的np.linspace计算出返回值中每个下标对应的真正的频率:

freqs = np.linspace(0, sampling_rate*10, fft_size/2+1 ) # 表示频率

#freqs = np.linspace(0, sampling_rate/2 , fft_size/2 + 1) # 表示频率

xfp = 20 * np.log10(np.clip(np.abs(xf), 1e-20, 1e100))

#xfp = np.abs(xf) * 2 # 代表信号的幅值,即振幅

# 最后我们计算每个频率分量的幅值,并通过 20*np.log10()将其转换为以db单位的值。

# 为了防止0幅值的成分造成log10无法计算,我们调用np.clip对xf的幅值进行上下限处理

plt.figure(figsize=(8, 4))

plt.subplot(211)

plt.plot(t[:fft_size], xs)

plt.xlabel(u"时间(秒)", fontproperties='FangSong')

plt.title(u"500Hz和50Hz的波形和频谱", fontproperties='FangSong')

plt.subplot(212)

plt.plot(freqs, xfp)

plt.xlabel(u"频率(Hz)", fontproperties='FangSong')

#字体FangSong

plt.ylabel(u'幅值', fontproperties='FangSong')

plt.subplots_adjust(hspace=0.4)

'''subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=None, hspace=None)

有六个可选参数来控制子图布局。值均为0~1之间。其中left、bottom、right、top围成的区域就是子图的区域。

wspace、hspace分别表示子图之间左右、上下的间距。实际的默认值由matplotlibrc文件控制的。

'''

plt.show()

test_fft()

python波形分析_[转载]频谱分析:基于python画出时域频域波形相关推荐

  1. 频谱分析:基于python画出时域频域波形

    一,FFT解释 FFT(Fast Fourier Transformation)是离散傅氏变换(DFT)的快速算法.即为快速傅氏变换.它是根据离散傅氏变换的奇.偶.虚.实等特性,对离散傅立叶变换的算法 ...

  2. 用python画雪花 科赫曲线递归_【TCE的编程小讲堂】【Python】【第三期】如何画出科赫雪花?(下)...

    大家还记得上期讲的科赫雪花吗?我们上次讲过画出一条边的方法,大家看看代码复习一下 import turtle#包含turtle库 def koch(l): turtle.forward(l / 4)# ...

  3. python 文件格式转换_数据分析:基于Python的自定义文件格式转换系统

    ( 白宁超 2018年7月16日14:47:41 ) 导读:随着大数据的快速发展,自然语言处理.数据挖掘.机器学习技术应用愈加广泛.针对大数据的预处理工作是一项庞杂.棘手的工作.首先数据采集和存储,尤 ...

  4. 利用python处理dna序列_详解基于python的全局与局部序列比对的实现(DNA)

    程序能实现什么 a.完成gap值的自定义输入以及两条需比对序列的输入 b.完成得分矩阵的计算及输出 c.输出序列比对结果 d.使用matplotlib对得分矩阵路径的绘制 一.实现步骤 1.用户输入步 ...

  5. python人工智能计算器_招募:基于python的召唤师全时段全技能(含均值AI)计算器全程测试...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 √ 功能简介 借助Python跨平台.轻量化的优点,解决常规excel无法完成的准确AI.速度量化.CD量化.前后摇量化的问题,制作可以自动最优选择技能连 ...

  6. python selenium爬虫_详解基于python +Selenium的爬虫

    详解基于python +Selenium的爬虫 一.背景 1. Selenium Selenium 是一个用于web应用程序自动化测试的工具,直接运行在浏览器当中,支持chrome.firefox等主 ...

  7. python语言的编程模式_一种基于Python语言的EDA开发平台及其使用方法与流程

    本发明涉及EDA开发的技术领域,尤其是指一种基于Python语言的EDA开发平台及其使用方法. 背景技术: 目前,主流的EDA设计语言Verilog HDL能实现完整的芯片硬件逻辑电路开发,但是其代码 ...

  8. 基于python的分布式扫描器_一种基于python的大数据分布式任务处理装置的制作方法...

    本发明涉及数据处理技术,具体是一种基于python的大数据分布式任务处理装置. 背景技术: 本发明提供一种分布式队列任务处理方案和装置,该方法可以提供分布式处理python任务,任务类型包括爬虫及其他 ...

  9. python检索论文_一种基于Python的音乐检索方法的研究

    应用技术 0 前言 最近两年,人们对于流行音乐的追求与需求量日益增 加,但如何保证用户能在不知歌名只知歌词的情况下,完成 自己的全方面多种类的听歌需求呢?于是,电脑工程师就推 出了"听歌识曲 ...

  10. python椭圆形骨料_一种基于python再生混凝土三维随机球形骨料模型的构建方法与流程...

    本发明涉及建筑技术领域,尤其涉一种基于python再生混凝土三维随机球形骨料模型的构建方法. 背景技术: 再生混凝土是指利用再生粗骨料部分或者全部代替天然骨料配置而成的混凝土,再生混凝土技术的开发和利 ...

最新文章

  1. 为什么阿里强制 boolean 类型变量不能使用 is 开头?
  2. 再谈 BigInteger - 使用快速傅里叶变换
  3. Node Buffer 利用 slice + indexOf 生成 split 方法
  4. js立即调用的函数表达式
  5. JavaScript操作select标签详解
  6. 激光振镜误差校正算法C语言,动态聚焦激光振镜扫描系统的误差分析及图形校正算法.pdf...
  7. react实现svg实线、虚线、方形进度条
  8. java同步锁synchronized_synchronized、锁、多线程同步的原理是咋样的?
  9. gvim安装及其配置
  10. C#操作内存读写方法是什么呢?让我们来看看具体的实例实现:
  11. mybatis3文档
  12. 饭卡可以用水冲洗吗_关于饭卡使用与管理的规定
  13. linux服务网卡速率查看,linux 下查看网卡工作速率
  14. 有什么简单办法从格式复杂的 Excel中提取数据
  15. 【Python打印图形问题】利用print打印一些规则的图形(通过特殊符号比如*和空格组成)
  16. html中fixed属性,CSSposition属性中:fixed使用详解
  17. cisco路由器基本实验之五 配置Loopback接口进行远程登录 (Boson NetSim)
  18. IDEA导入maven依赖失败
  19. 【DW推荐系统论文组队task1--NCF】
  20. 响铃:2018博鳌金融科技亮点 这些关键词你搞懂了几个

热门文章

  1. Redis 的过期策略
  2. 微信小程序自定义tabbar 图标凸出效果
  3. ofdm导频信道估计matlab,基于导频的OFDM系统信道估计
  4. TUIO学习笔记1-TUIO 1.1 Protocol Specification协议规范/标准
  5. Julia 下载 安装 juno 开发环境搭建
  6. Linux 进程通信
  7. 迅捷PDF编辑器如何编辑PDF文字图文教程
  8. CC2530单片机开发--串口
  9. 【Proteus仿真】PIC12C672单片机+LM317可调数显稳压电源1.3V~25V
  10. uniapp对接阿里云OSS前端直传