此博客不介绍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函数详解相关推荐

  1. python平方数迭代器_对python中的高效迭代器函数详解

    python中内置的库中有个itertools,可以满足我们在编程中绝大多数需要迭代的场合,当然也可以自己造轮子,但是有现成的好用的轮子不妨也学习一下,看哪个用的顺手~ 首先还是要先import一下: ...

  2. python中plt定义,对Python中plt的画图函数详解

    1.plt.legend plt.legend(loc=0)#显示图例的位置,自适应方式 说明: 'best' : 0, (only implemented for axes legends)(自适应 ...

  3. python中文件读写--open函数详解

    python中open函数详解 在python中文件的读取分为三步走: 读:打开文件 -> 读文件 -> 关闭文件 (有点像把大象放进冰箱需要几步?的问题) 1.open函数 open函数 ...

  4. python中内置数学函数详解和实例应用之三角函数_初级阶段(二)

    学习目标: 利用python进行三角函数运算 学习内容: python中的三角函数合集和应用实例 转载请注明出处! 学习产出: 环境:python 3.7, 利用shell进行实例操作. Note: ...

  5. [转载] Python 中reduce()与lambda函数详解

    参考链接: Python中的reduce a = [2,22,222] Sn = reduce(lambda x,y:x+y,a) print "计算和为:",Sn reduce( ...

  6. python中input()函数详解

    1.input()函数赋值后数据在python内部的类型. if __name__=="__main__":a=input()print(type(a))b=input()prin ...

  7. python中内置数学函数详解和实例应用之三角函数曲线_初级阶段(三)

    学习目标: 利用matplotlib 和 numpy 画三角函数曲线 学习内容: 正弦,余弦,正切,余切函数曲线 双曲正弦,双曲余弦,双曲正切,双曲余切函数曲线 反正弦,反余弦,反正切,反余切函数曲线 ...

  8. python中的subprocess.Popen()使用详解---以及注意的问题(死锁)

    从python2.4版本开始,可以用subprocess这个模块来产生子进程,并连接到子进程的标准输入/输出/错误中去,还可以得到子进程的返回值. subprocess意在替代其他几个老的模块或者函数 ...

  9. Python中的select、epoll详解

    Python中的select.epoll详解 文章目录 Python中的select.epoll详解 一.select 1.相关概念 2.select的特性 1.那么单进程是如何实现多并发的呢??? ...

  10. Python中random模块生成随机数详解

    Python中random模块生成随机数详解 本文给大家汇总了一下在Python中random模块中最常用的生成随机数的方法,有需要的小伙伴可以参考下 Python中的random模块用于生成随机数. ...

最新文章

  1. redmine plugin
  2. android缓存之Lrucache 和LinkedHashMap
  3. 将用户添加到sudoers_在CentOS系统中将用户添加到Sudoers文件的方法
  4. Linux Kconfig及Makefile学习
  5. 小米正式发布潮流手机小米Civi 1S和小米智能家庭屏10两款重磅新品
  6. Dapper的动态查询生成器
  7. SAP License:生产订单结算时候的几个差异
  8. RedMonk最新编程语言排行榜出炉:JS霸榜,C++下降至第7
  9. HDU2174 kiki's game(博弈)
  10. 苹果6s强制删除id锁_苹果ID锁安全神话破灭!2分钟就能解锁
  11. Java 八大排序算法
  12. [UWP开发] Facebook SDK使用(一) —— 配置SDK及Facebook登陆
  13. 【数学】嵌入式开发中涉及到的对数公式
  14. 万字综述自动驾驶数据闭环
  15. WebDriver下载地址
  16. 路由器重温——串行链路链路层协议积累-帧中继FR协议
  17. 那些35岁的程序员哪里去了?
  18. “蘑菇书”是怎样磨出来的?
  19. 用jk触发器构成二分频电路_JK触发器地应用设计.ppt
  20. spark配置elasticsearch属性汇总(基于es7)

热门文章

  1. iOS高仿app源码:10天时间纯代码打造高仿优质《内涵段子》
  2. 解析人工智能与高等教育中的大数据
  3. 995. Minimum Number of K Consecutive Bit Flips(K 连续位的最小翻转次数)解法(C++ 注释)
  4. 以太坊区块链浏览器搭建
  5. win7自带防火墙怎么关闭
  6. LaTeX beamer中minipage添加脚注(footnote)
  7. 极化SAR图像特征提取与分类方法研究
  8. 小米路由修改服务器密码,小米路由器怎么重新设置密码?
  9. 5.1.3 5GMM sublayer states
  10. excel冻结窗格怎么同时冻结行和列