概要
蝶形结或蝶形网络(英语:Butterfly diagram)是快速傅里叶变换算法中的组成单位,将原本的较大点数的离散傅里叶运算,拆成较小点数的离散傅立叶运算组合,反之亦然(将原本点数较小的离散傅立叶运算,组合成较大点数离散傅里叶运算的组合) 来源:维基百科
这里蝴蝶法的核心思想笔者不再赘述,可以参考b站视频:快速搞懂傅里叶变换
代码实现:
import numpy as np
def DFT(poly):
n = len(poly)
if n == 1:
return poly
#将多项式分成奇数次数项和偶数次数项
poly_even = poly[::2] # 偶数次数项
poly_odd = poly[1::2] # 奇数次数项
#递归计算偶数次数项和奇数次数项的离散傅里叶变换
dft_even = DFT(poly_even)
dft_odd = DFT(poly_odd)
#合并结