Python numpy下几种fft函数的使用方式
作者:安安爸Chris 发布时间:2022-06-21 07:19:55
numpy下fft模块提供了丰富的fft函数,几种常用的在这里记录一下使用方式
fft
输入实数samples,如果输入的sample是带虚数部分的话,虚数部分会被默认删除。
t=np.arange(12)
b=np.sin(t)
print(b)
print("sum(b)=", np.sum(b))
s = np.fft.fft(b)
print(s)
运行结果截图如下
从图中可以看到,
[0]是一个实数,实数部分是所有input中各个元素之和。
[i]与[N-i]共轭;输入的N如果是偶数,那么[N/2]没有共轭的元素。 rfft
rfft
其实就是对fft的结果输出做了省略。 针对刚刚提到的共轭特性,其实输出结果是要保留(N+1)//2个结果就可以了。
t=np.arange(12)
b=np.sin(t)
print(b)
print("sum(b)=", np.sum(b))
s = np.fft.fft(b)
print("fft result:", s)
s = np.fft.rfft(b)
print("rfft result:", s)
fftfreq
返回fft的频率节点
上面的fft和rfft将时域数据转为频域,得到的数据的bin是哪些范围?
可以通过fftfreq来获取
第一个参数n是时域数据的数据个数,第二个参数d是表示每一个bin的尺度。一般是1/sample_rate
t=np.arange(12)
b=np.sin(t)
print(b)
print("sum(b)=", np.sum(b))
s = np.fft.fft(b)
print("fft result:", s)
s = np.fft.rfft(b)
print("rfft result:", s)
s= np.fft.fftfreq(12, d=1/8000)
print(s)
其结果为
[ 0. 666.66666667 1333.33333333 2000.
2666.66666667 3333.33333333 -4000. -3333.33333333
-2666.66666667 -2000. -1333.33333333 -666.66666667]
那么结合rfft的数据就有
Bin | Range | Value |
---|---|---|
bin[1] | 1~667HZ | 0.46997981+0.41183211j |
bin[2] | 667~1334HZ | -1.36179847-5.76500237j |
bin[3] | 1334~2000HZ | 0.14669493-0.4965488j |
bin[4] | 2000~2667HZ | 0.20513541-0.2233417j |
bin[5] | 2667~3333HZ | 0.22157176-0.09538547j |
bin[6] | 3333~4kHZ | 0.22563497+0.j |
ifft
ifft是逆向fft操作,代码如下
import numpy as np
t=np.arange(12)
b=np.sin(t)
print(b)
s = np.fft.fft(b)
#print(s)
y = np.fft.ifft(s)
print("restore:", y)
它的结果虽然也是复数,但是在实数部分,可以看到,就是结果;
所以也可以直接输出实数部分np.fft.ifft(s).real
irfft
irfft是配合rfft使用的; 上面的例子可以看到,如果信号长度是n, 那么fft的输出结果的长度也是n;
但是rfft的结果是n//2+1;
irfft匹配的是rfft,所以它的参数长度与ifft是不同的;两者也不可混用。
import numpy as np
t=np.arange(12)
b=np.sin(t)
print(b)
s = np.fft.rfft(b)
#print(s)
y = np.fft.irfft(s)
print("restore:", y)
来源:https://blog.csdn.net/mimiduck/article/details/118549640


猜你喜欢
- 实际参数在函数中我们可以使用 arguments 对象获得 (注:形参可通过 arguments.callee 获得),虽然 argumen
- 对数据库的备份是网站管理人员的必修课,那么常用的数据库备份方式有哪些呢?应如何选择?数据库备份有四种类型,分别应用于不同的场合,下面简要介绍
- Python画图主要用到matplotlib这个库。Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的
- 一、layui下拉复选实现的背景:实现一个管理员拥有多个权限二、 具体实现://依赖资源<link rel="stylesh
- 在你的程序初始化时使用如下代码: <?php $Php2Html_FileUrl = $_SERVER["REQU
- Django配置文件settings简单说明,包含时区语言等打开创建好的django工程,查看settings.py文件BASE_DIR =
- 引言最常见的闭包 (Closure) 范式大家都很熟悉了:(function() {// ...})(); 很
- 今天项目中遇到了中文编码的zip文件,处理了蛮长时间,所以记录下,以免下次踩坑。Python2下Python2中读取zip文件,zipfil
- 在基于互联网的应用中,程序经常需要自动地发送电子邮件。如:一个网站的注册系统会在用户注册时发送一封邮件来确认注册;当用户忘记登陆密码的时候,
- try ...except 是最常见的捕获处理异常的结构,其主要作用是将可能出现问题的代码块用try :包裹起来,不至于出现错误让程序崩溃,
- Python 编程中可以使用 PyMysql 进行数据库的连接及诸如查询/插入/更新等操作,但是每次连接 MySQL 数据库请求时,都是独立
- <%'该函数作用:按指定参数格式化显示时间。'numformat=1:将时间转化为yyyy-mm-dd h
- 1. 匿名函数匿名函数(anonymous function)是指未与任何标识符绑定的函数,多用在functional programmin
- 说明如果你的项目流量非常小,完全不用担心有并发的购买请求,那么做这样一个系统意义不大。但如果你的系统要像12306那样,接受高并发访问和下单
- 在我们制作主页的过程中,用到表格的地方非常多,灵活运用表格技巧可以为我们的网页增色不少,这里我就详细介
- 技术栈win7+python3+selenium之前有个需求需要实现自动化提流程,为了在任何电脑都能实现该功能,特此写了个爬虫,并将其打包成
- MySQL性能优化在互联网公司MySQL的使用非常广泛,大家经常会有MySQL性能优化方面的需求。整理了一些在MySQL优化方面的实用技巧。
- NumPy数组(2、数组的操作)基本运算数组的算术运算是按元素逐个运算。数组运算后将创建包含运算结果的新数组。>>> a=
- 本文实例讲述了Python计算字符宽度的方法。分享给大家供大家参考,具体如下:最近在用python写一个CLI小程序,其中涉及到计算字符宽度
- 在上篇给大家介绍了Java中正则表达式的使用和详解(上),具体内容如下所示:1.常用正则表达式规则正则表达式语法 一个或多个汉字