python频谱分析_基于Python的频谱分析(一)

1、傅里叶变换

傅里叶变换是信号领域沟通时域和频域的桥梁,在频域里可以更方便的进行一些分析。傅里叶主要针对的是平稳信号的频率特性分析,简单说就是具有一定周期性的信号,因为傅里叶变换采取的是有限取样的方式,所以对于取样长度和取样对象有着一定的要求。

2、基于Python的频谱分析

将时域信号通过FFT转换为频域信号之后,将其各个频率分量的幅值绘制成图,可以很直观地观察信号的频谱。

具体分析见代码注释。

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

import pylab as pl#导入一个绘图模块,matplotlib下的模块

sampling_rate= 8000#采样频率为8000Hz

fft_size = 512 #FFT处理的取样长度

t = np.arange(0, 1.0, 1.0/sampling_rate)#np.arange(起点,终点,间隔)产生1s长的取样时间

x = np.sin(2*np.pi*156.25*t) + 2*np.sin(2*np.pi*234.375*t)#两个正弦波叠加,156.25HZ和234.375HZ#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#利用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/2, fft_size/2+1)#np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)#在指定的间隔内返回均匀间隔的数字

xfp = 20*np.log10(np.clip(np.abs(xf), 1e-20, 1e100))#最后我们计算每个频率分量的幅值,并通过 20*np.log10()将其转换为以db单位的值。为了防止0幅值的成分造成log10无法计算,我们调用np.clip对xf的幅值进行上下限处理

#绘图显示结果

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

pl.subplot(211)

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

pl.xlabel(u"Time(S)")

pl.title(u"156.25Hz and 234.375Hz WaveForm And Freq")

pl.subplot(212)

pl.plot(freqs, xfp)

pl.xlabel(u"Freq(Hz)")

pl.subplots_adjust(hspace=0.4)

pl.show()

3、绘图结果显示

如果你放大其频谱中的两个峰值的部分的话,可以看到其值分别为:

>>>xfp[10]-6.0205999132796251

>>>xfp[15]-9.6432746655328714e-16

即156.25Hz的成分为-6dB, 而234.375Hz的成分为0dB,与波形的计算公式中的各个分量的能量(振幅值/2)符合。

---------------------

作者:赵至柔

来源:CSDN

原文:https://blog.csdn.net/qq_39516859/article/details/79794549

版权声明:本文为博主原创文章,转载请附上博文链接!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/551288.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python 武沛齐_武沛齐 - 主页

${content}你输入的邮件地址曾经通过${type}激活了本站帐号,请使用${type}帐号直接登录。课程习题:提示请选择一个答案提交查看正确答案下一题${option}: ${content}{if multiple}{else}{/if}{if defined("xlist")&&!!xlist.length}{l…

linux全过程图解图片,安装 Mandriva Linux全过程《图解》

wide 于 2006-02-26 10:29:58发表:设定帐号Mandriva 是一个可供多人使用的作业系统,使用者必须先在系统中拥有帐号才可以使用。而登入时,则必须输入帐号及密码,验证无误后方可进入。 本章将介绍如何在安装时设定使用者帐号及密码。何谓系统管…

mnist torch加载fashion_Pytorch加载并可视化FashionMNIST指定层(Udacity)

加载并可视化FashionMNIST在这个notebook中,我们要加载并查看 Fashion-MNIST 数据库中的图像。任何分类问题的第一步,都是查看你正在使用的数据集。这样你可以了解有关图像和标签格式的一些详细信息,以及对如何定义网络以识别此类图像集中的模…

linux 查看socket fd,linux socket中select()函数以及FD_ZERO FD_SET FD_CLR FD_ISSET

linux socket非阻塞编程时常见到如下的code:socket s;.....fd_set set;.....struct timeval tv;while(1){FD_ZERO(&set);//将你的套节字集合清空FD_SET(s, &set);//加入你感兴趣的套节字到集合,这里是一个读数据的套节字stv.tv_sec 3;tv.tv_usec 0;select(maxf…

pytorch默认初始化_Pytorch 实现权重初始化

pytorch 怎么定义多任务学习中的不同任务的权重pytorch 怎么定义多任务学习中的不同任务的权重 搜索资料 我来答 分享 微信扫一扫 新浪微博 QQ空间 举报 浏览15 次 本地图片 图片链接 代码 提交回答pytorch训练好的模型能用在keras或tensorflow吗我最近在找一个resnet18的权重…

c语言程序编写一朵花,一朵花(中英双语)

一朵花A Flower作者|白鹤清泉(Baihe Qingquan)英译|周柯楠(Zhou Kenan)轻轻地走近你的世界Gently I approach your world默默地与你对视Looking you in the eye silently我用眼睛嘴唇与你贴近I keep close to you with my eyes and lips只为听到你芬芳的…

k3 审核流程图_3-金蝶K3操作流程图详解

一、流程图符号说明:______________________________________________ 3二、K/3系统基础操作流程图:___________________________________ 4A、“中间层—账套管理”_________________________________________________ 4B:系统基础资料_____…

c语言链表贪吃蛇教程,编《贪吃蛇》最简单的算法,链表法

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include#include#include#include#include#define ESC 0x011b#define UP 0x4800#define DOWN 0x5000#define LEFT 0x4b00#define RIGHT 0x4d00struct rode{int x;int y;struct rode *next;};struct rode *head,food;void initgra(…

硬解析优化_72最近一次现场生产系统优化的成果与开发建议

上周给南京某客户一个重要业务系统的数据库做优化,能实施的马上做了实施,优化前后性能对比非常明显,系统最为严重的IO负载过重问题基本得到解决:优化前一天的物理读是48亿次,优化后是15亿次,效果那是刚刚的…

c语言中的运算符按位或,|按位或运算符

|按位或运算符,同样,它也与我们前面学过的逻辑或运算符类似,只有一个竖线表示,作用位,两个对应的二进制位有一个为1结果即为1。如8|7的运算过程可以如下表示:8 0000 0000 0000 0000 0000 0000 0000 1000…

为什么仿宋字体打印出楷体_win7缺少仿宋_GB2312和楷体_GB2312字体,造成word字体显示不正常...

领导反映说自己电脑上word显示的字体和打印机打出来的字体不一样。且别人发过来的word文件格式会不一样,本来只有2页的,到她那里会变成3页。她说会不会是字体有问题。我说要看一下。我当时想也可能是word设置有问题。后来上网查了下,说win7系…

android动态开发,android开发实现动态壁纸

释放双眼,带上耳机,听听看~!代码中有用到两个接口IWallpaperService mService;IWallpaperEngine mEngine;我们可以看到该目录下面有三个aidl接口,分别是复制代码 代码如下:interface IWallpaperConnection {void attachEngine(IWa…

build 之前执行task_浅谈VS编译自定义编译任务—MSBuild Task(csproject)-阿里云开发者社区...

在上一篇浅谈.NET编译时注入(C#-->IL)中我们简单的反编译查看了几种c#语法糖和PostSharp在编译成IL时为我做的MSIL注入。紧接着在这节,要来看的就是MSBuild Task。在我们的代码预编译过程中我们可以创建我们自己的任务Task。下面我们就开始做一个简单的Task。1&a…

xml层级工具_.NET的类型层次查看工具,ClassHierarchyViewer,0.3.0.1

上周为了快速了解一个.NET的库而需要查看其类型层次。假如要在文章中表示一个类型层次,还是用文本比较舒服,截图始终是不方便。Reflector虽然能够显示类型层次,但我无法方便的把显示出来的类型层次转换为文本形式。而且,Reflector…

XM7 FOR ANDROID,视频剪辑制作app-视频剪辑制作xm8.0安卓版-蜻蜓手游网

视频剪辑制作是一款很好用的手机视频编辑软件,在这里你可以进行视频剪辑、制作字幕、背景音乐制作等,让你可以轻松的制作视频,需要视频剪辑制作的就来蜻蜓手游网下载吧!软件功能【背景配乐】给视频添加背景音乐,支持MP…

css宋体代码_css中宋体怎么设置?

CSS 能够对网页中元素位置的排版进行像素级精确控制,支持几乎所有的字体字号样式,拥有对网页对象和模型样式编辑的能力。下面我们来看一下css设置宋体的方法。css设置宋体代码如下:div里面设置字体宋体样式全局设置字体样式font-family 规定元…

android极光推送声音,android 极光推送 声音与振动 的关闭和开启

前言:最近刚好在写一些推送方面的东西,又是新手,不断在网上找资料,很少,不过还是找到了一些,反正百度我是再也不想百度了,谷歌一下子就能找到想要的。废话不多说。1.主要方法就是如下一个函数pr…

linux禁止客户端上传文件_Linux 几种上传文件到linux服务的方法

Linux下几种文件传输命令 sz rz sftp scp最近在部署系统时接触了一些文件传输命令,分别做一下简单记录:1.sftpSecure Ftp 是一个基于SSH安全协议的文件传输管理工具。由于它是基于SSH的,会在传输过程中对用户的密码、数据等敏感信息进行加密&…

韩泰机器人_[视频]Hankook Mirae展示四米高的Method-2载人两足机器人

Method-2 身高 13 英尺(约合 4 米),重 1.5 吨。当它“走路”的时候,地面都会跟着一起震动。Hankook Mirae Technology 董事长 Yang Jin-Ho 表示:“Method-2 是全球首款载人双足机器人,它能够在人类难以企及的极端危险地带开展工作…

r语言的MASS包干什么的_R语言综述的包

Multivariate Statistics(多元统计)基本的R包已经实现了传统多元统计的很多功能,然而CRNA的许多其它包提供了更深入的多元统计方法,下面做个简要的综述。多元统计的特殊应用在CRNA的其它任务列表(taskview)里也会提及,如:排序(ord…