快速傅里叶变换python_纯干货:FFT快速傅里叶变换的Python语言实现(源代码)

本文介绍了如何使用Python实现快速傅里叶变换(FFT)和快速傅里叶逆变换(IFFT),包括源代码、位倒序、计算旋转因子等关键步骤,并提供了DFT作为对比。通过FFT_pack类封装了各种变换方法,适用于不同应用场景。
摘要由CSDN通过智能技术生成

这两天一直在研究FFT算法,研究了两天总算整明白了快速傅里叶变换算法,今天就写一篇文章来总结一下。

FFT和IFFT的Python语言实现源代码

直接把我用了一个晚上写好的快速傅里叶变换和快速傅里叶逆变换的Python语言代码贴出,关键部分有注释,里面只用到了Python标准库cmath库,因为要计算cos、sin函数的值。直接复制到自己的Python程序中就可以直接使用了。

"""

@Author: Sam

@Function: Fast Fourier Transform

@Time: 2020.02.22 16:00

"""

from cmath import sin, cos, pi

class FFT_pack():

def __init__(self, _list=[], N=0): # _list 是传入的待计算的离散序列,N是序列采样点数,对于本方法,点数必须是2^n才可以得到正确结果

self.list = _list # 初始化数据

self.N = N

self.total_m = 0 # 序列的总层数

self._reverse_list = [] # 位倒序列表

self.output = [] # 计算结果存储列表

self._W = [] # 系数因子列表

for _ in range(len(self.list)):

self._reverse_list.append(self.list[self._reverse_pos(_)])

self.output = self._reverse_list.copy()

for _ in range(self.N):

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值