时间抽取法FFT的运算特点

蝶形运算

在这里插入图片描述
已知:x[n]的序列长度为N
每2个数据数据做一次蝶形运算,故每一层有N/2次蝶形运算。共有M = log2N层,因此有N·log2N/2个蝶形运算。一次蝶形有1次复数乘法,两次复数加法,由此可以推导出总计算量。

原位计算—in place

  • 在DFT运算时,我们每一次运算都需要保持x[n]序列的值,x[n]一直占用着存储空间。
  • 在FFT运算为流水操作,每一次运算的结果只和前一次运算的结果有关,因此我们可以用最近一次的运算结果覆盖前两次的运算结果运算结果,从而节省存储空间。

序数重排(乱序)

  • 第二列为二进制码对应地址,第三列为以中间一位为对称中心反转。我们发现反转后的地址为自然顺序码,我们把这种运算称作按位反转。现代的计算机已经有了按位反转的存储功能,大大提高了运算效率。
    x[0] 000 000
    x[4] 100 001
    x[2] 010 010
    x[6] 110 011
    x[1] 001 100
    x[3] 011 110
    x[5] 110 011
    x[7] 111 111

蝶形类型随迭代次数成倍增加

  1. 取数间隔:用以组合、计算下一层结果的本层数据之间的间隔。
    按照2i-1的规律进行取数,i为排数。
  2. 加权因子:
    加权因子的个数随着迭代次数的增加按照2i-1的规律增加。
发布了42 篇原创文章 · 获赞 6 · 访问量 1473

猜你喜欢

转载自blog.csdn.net/qq_41156733/article/details/104550285
FFT