【笔记】Cooley–Tukey FFT Algorithm - Iterative Edition

本文深入探讨了Cooley-Tukey快速傅里叶变换(FFT)算法的迭代实现,包括输入向量长度为2的幂次时的情况和非2的幂次时的处理。详细介绍了DFT、IDFT的计算,并阐述了如何处理不同长度的输入向量,特别是通过卷积的关系来说明IDFT的计算方法。同时,提到了IDFT过程中涉及的虚实交换操作。
摘要由CSDN通过智能技术生成

DFT

IDFT

FFT

1 当输入向量长度为2^k时

参考《Introduction to Algorithms》chapter 30.3

每次迭代的元素赋值及辅助方法reorder

/// <summary>
/// Radix-2 Step Helper Method
/// </summary>
/// <param name="data">Sample vector.</param>
/// <param name="exponentSign">Fourier series exponent sign.</param>
/// <param name="levelSize">Level Group Size.</param>
/// <param name="k">Index inside of the level.</param>
private static void Radix2Step(Complex[] data, int exponentSign, int levelSize, int k)
{
    // Twiddle Factor
    var exponent = (exponentSign * k) * Math.PI / levelSize;
    var w = new Complex(Math.Cos(exponent), Math.Sin(exponent));

    var step = levelSize << 1;
    for (var i = k; i < data.Length; i += step)
    {
        var ai = data[i];
        var t = w
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值