FFT代码上的实现细节

本文搬运自本人高中时期CSDN博客,若图片加载不出来,可到原文查看:https://blog.csdn.net/zhangtingxiqwq/article/details/132584208

ω\omega 的计算

ωn1\omega_n^1 的计算

考虑单位圆, ωn1\omega_n^1 为:
在这里插入图片描述

也就是:
在这里插入图片描述

注:op为判断当前为dft还是idft

ωni\omega_n^i 的计算

当要计算 ωni\omega_n^i 时,只需要在 ωni1\omega_n^{i-1} 基础上乘 ωn1\omega_n^1 即可

初始时实现奇偶翻转

转化为二进制反正

在程序开始,可以先进行好翻转。

  • 初始: 0 1 2 3 4 5 6 7

  • 最终: 0 4 2 6 1 5 3 7

发现其实是对二进制进行翻转,考虑其最后一位的翻转过程:

在这里插入图片描述

先对前面进行翻转,再补上第一位:
在这里插入图片描述

翻转对称性

可以发现,翻转过程具有对称性,所以可以直接暴力翻转:
在这里插入图片描述