我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python numpy下几种fft函数的使用方式

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python numpy下几种fft函数的使用方式

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)

np.fft.rfft

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的数据就有

BinRangeValue
bin[1]1~667HZ0.46997981+0.41183211j
bin[2]667~1334HZ-1.36179847-5.76500237j
bin[3]1334~2000HZ0.14669493-0.4965488j
bin[4]2000~2667HZ0.20513541-0.2233417j
bin[5]2667~3333HZ0.22157176-0.09538547j
bin[6]3333~4kHZ0.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)

总结

到此这篇关于Python numpy下几种fft函数使用的文章就介绍到这了,更多相关numpy fft函数的使用内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python numpy下几种fft函数的使用方式

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python下载安装的几种方式

个人博客开通了,地址:https://elfgirl.top 欢迎访问####前言:这篇博客的主要内容是记录一下Python语言的下载安装方式;说明:本人的操作系统是win10 64位;我要下载64位python。####下载步骤:1、打开
2023-01-31

postMessage的几种使用方式

postMessage函数是用来在两个窗口之间进行通信的方法,可以在不同窗口之间传递消息。它有几种使用方式:1. 单向通信:在一个窗口中调用postMessage函数发送消息,另一个窗口通过监听message事件来接收消息。示例代码如下:发
2023-09-15

c++中的函数调用有哪几种方式

c++ 函数调用方式有五种:值传递、引用传递、指针传递、返回值、虚函数调用。值传递传递副本,不会影响实际参数;引用传递传递引用,修改参数会影响实际参数;指针传递传递地址,修改参数会影响实际参数;返回值函数返回给调用函数;虚函数调用特定于面向
c++中的函数调用有哪几种方式
2024-05-01

js函数声明的方式有几种

这篇文章主要介绍“js函数声明的方式有几种”,在日常操作中,相信很多人在js函数声明的方式有几种问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”js函数声明的方式有几种”的疑惑有所帮助!接下来,请跟着小编一起来
2023-06-20

Python Requests使用Cookie的几种方式详解

目录前言一、通过headers参数使用二、通过cookies参数使用三、通过Session会话使用方式0:自动设置方式1:通过key设置方式2:通过set 方法设置方式3:通过 add_dict_to_cookiejar 方法设置方式4:通
2023-08-08

Python调用shell的几种方式

1.cmd = "some unix command"retcode = subprocess.call(cmd,shell=True)2.ssh = paramiko.SSHClient()ssh.connect(server, user
2023-01-31

Python中数组的几种使用方法

二维数组的初始化matirx_done = [[0 for i in range(0, len(matirx))]for j in range(0, len(matirx[0]))]就将其初始化为一个与matrix相同大小的元素全为 0 的
2023-01-31

python保留小数函数的几种使用总结

本文主要介绍了python保留小数函数的几种使用总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-02-27

hive的使用方式有几种

这篇文章主要为大家展示了“hive的使用方式有几种”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“hive的使用方式有几种”这篇文章吧。Hive有三种使用方式——CLI命令行,HWI(hie we
2023-06-03

Python调用API接口的几种方式

Python调用API接口的几种方式主要有以下几种:1. 使用标准库:Python标准库中的urllib和urllib2模块可以用来发送HTTP请求,并获取API接口的响应数据。可以使用urllib.urlopen或urllib2.urlo
2023-09-02

python下几种打开文件的方式(你习惯

昨天看完了这本python进阶,感觉这本书对我启发很大,做了三张纸的笔记,方便我在遇到问题的时候翻阅,然后寻找可能的解决方案。作为一个使用python一年的小白,虽然说不是小白,但是这一年来基本上是用什么学什么,对python没有系统的学习
2023-01-31

C# 使用多线程的几种方式

在C#中,有几种方式可以使用多线程:1. 使用Thread类:可以创建一个新线程并在其中执行指定的方法。可以使用Thread类来启动和停止线程,并检查线程的状态。以下是一个使用Thread类的例子:```csharpusing System
2023-09-15

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录