这两天一直在研究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):