Python中scipy.signal.stft函数详解
此博客不介绍Python函数的理论知识和算法具体实现,只讲解函数的使用方法,函数输入和输出及相关函数参数,需要看相关原理的看下其他博客(时间充足的话,建议看相关书籍,系统学习)
scipy.signal.stft函数官方文档:https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.stft.html
窗函数类型(scipy.signal.get_window)官方文档:https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.get_window.html
1. 理论简介
短时傅里叶变换(STFT)解决了快速傅里叶变换(FFT)的缺点,在得到信号频域信息的基础上也保留了时域信息。具体实现是通过添加窗函数(窗函数的长度是固定的),时域信号加窗将原始时域信号分割为多个片段,对每一个片段进行FFT,得到时频谱。
2. Python函数
scipy.signal.stft(x,fs = 1.0,window =‘hann’,nperseg = 256,noverlap = None,nfft = None,detrend = False,return_oneside = True,boundary =‘zeros’,padded = True,axis = -1 )
2.1 输入参数
x: STFT变换的时域信号
fs: 时域信号的采样频率
window: 时域信号分割需要的窗函数,可以自定义窗函数(但是这个方面没有尝试,需要自定义的话请自己尝试)
nperseg: 窗函数长度
noverlap: 窗函数重叠数,默认为50%。
nfft: FFT的长度,默认为nperseg。如大于nperseg会自动进行零填充
return_oneside : True返回复数实部,None返回复数。
剩下的参数一般不会涉及,采用默认的参数。
2.2 返回参数
f, t, Zxx = scipy.signal.stft(x,fs = 1.0,window ='hann',nperseg = 256,noverlap = None,nfft = None,detrend = False,return_oneside = True,boundary ='zeros',padded = True,axis = -1 )
f: 频率
t: 时间
Zxx: STFT时频数据
2.3 使用方法
f, t, Zxx = signal.stft(data, fs=framerate, nperseg=nperseg,window=window, nfft=nfft, return_onesided=False)
data为输入的时域数据,fs为采样频谱,nperseg为窗函数长度, window表示窗函数类型,nfft为FFT采样点数(建议使用None),return_onesided表示返回复数。返回f、t较为容易理解,Zxx返回的是二维数组,每一列数据某一时间段的频谱,每一行表示某一频率的不同时间的复数。
在使用过程中,只需注意x,fs、window、nperseg、nfft、return_onesided几个参数就可以。x、fs、return_onesided较为容易理解,window的字符串较为难,在stft函数中会自动执行win = get_window(window, nperseg)这一指令,故想要使用不同窗函数的话直接更改为不同字符串就可以(窗函数类型),常见的窗函数有boxcar、triang、blackman、hamming等,直接输入字符串就可以选择不同的窗函数,窗函数的时域、频域形状在上边的网站可以看到。nperseg参数的值需要根据具体情况判断,可以通过循环来查看不同值的效果。
Python中scipy.signal.stft函数详解相关推荐
- python平方数迭代器_对python中的高效迭代器函数详解
python中内置的库中有个itertools,可以满足我们在编程中绝大多数需要迭代的场合,当然也可以自己造轮子,但是有现成的好用的轮子不妨也学习一下,看哪个用的顺手~ 首先还是要先import一下: ...
- python中plt定义,对Python中plt的画图函数详解
1.plt.legend plt.legend(loc=0)#显示图例的位置,自适应方式 说明: 'best' : 0, (only implemented for axes legends)(自适应 ...
- python中文件读写--open函数详解
python中open函数详解 在python中文件的读取分为三步走: 读:打开文件 -> 读文件 -> 关闭文件 (有点像把大象放进冰箱需要几步?的问题) 1.open函数 open函数 ...
- python中内置数学函数详解和实例应用之三角函数_初级阶段(二)
学习目标: 利用python进行三角函数运算 学习内容: python中的三角函数合集和应用实例 转载请注明出处! 学习产出: 环境:python 3.7, 利用shell进行实例操作. Note: ...
- [转载] Python 中reduce()与lambda函数详解
参考链接: Python中的reduce a = [2,22,222] Sn = reduce(lambda x,y:x+y,a) print "计算和为:",Sn reduce( ...
- python中input()函数详解
1.input()函数赋值后数据在python内部的类型. if __name__=="__main__":a=input()print(type(a))b=input()prin ...
- python中内置数学函数详解和实例应用之三角函数曲线_初级阶段(三)
学习目标: 利用matplotlib 和 numpy 画三角函数曲线 学习内容: 正弦,余弦,正切,余切函数曲线 双曲正弦,双曲余弦,双曲正切,双曲余切函数曲线 反正弦,反余弦,反正切,反余切函数曲线 ...
- python中的subprocess.Popen()使用详解---以及注意的问题(死锁)
从python2.4版本开始,可以用subprocess这个模块来产生子进程,并连接到子进程的标准输入/输出/错误中去,还可以得到子进程的返回值. subprocess意在替代其他几个老的模块或者函数 ...
- Python中的select、epoll详解
Python中的select.epoll详解 文章目录 Python中的select.epoll详解 一.select 1.相关概念 2.select的特性 1.那么单进程是如何实现多并发的呢??? ...
- Python中random模块生成随机数详解
Python中random模块生成随机数详解 本文给大家汇总了一下在Python中random模块中最常用的生成随机数的方法,有需要的小伙伴可以参考下 Python中的random模块用于生成随机数. ...
最新文章
- redmine plugin
- android缓存之Lrucache 和LinkedHashMap
- 将用户添加到sudoers_在CentOS系统中将用户添加到Sudoers文件的方法
- Linux Kconfig及Makefile学习
- 小米正式发布潮流手机小米Civi 1S和小米智能家庭屏10两款重磅新品
- Dapper的动态查询生成器
- SAP License:生产订单结算时候的几个差异
- RedMonk最新编程语言排行榜出炉:JS霸榜,C++下降至第7
- HDU2174 kiki's game(博弈)
- 苹果6s强制删除id锁_苹果ID锁安全神话破灭!2分钟就能解锁
- Java 八大排序算法
- [UWP开发] Facebook SDK使用(一) —— 配置SDK及Facebook登陆
- 【数学】嵌入式开发中涉及到的对数公式
- 万字综述自动驾驶数据闭环
- WebDriver下载地址
- 路由器重温——串行链路链路层协议积累-帧中继FR协议
- 那些35岁的程序员哪里去了?
- “蘑菇书”是怎样磨出来的?
- 用jk触发器构成二分频电路_JK触发器地应用设计.ppt
- spark配置elasticsearch属性汇总(基于es7)
热门文章
- iOS高仿app源码:10天时间纯代码打造高仿优质《内涵段子》
- 解析人工智能与高等教育中的大数据
- 995. Minimum Number of K Consecutive Bit Flips(K 连续位的最小翻转次数)解法(C++ 注释)
- 以太坊区块链浏览器搭建
- win7自带防火墙怎么关闭
- LaTeX beamer中minipage添加脚注(footnote)
- 极化SAR图像特征提取与分类方法研究
- 小米路由修改服务器密码,小米路由器怎么重新设置密码?
- 5.1.3 5GMM sublayer states
- excel冻结窗格怎么同时冻结行和列