• FFT(不ji是干甚用的diao操作)


    鸣谢yveh,yhzq
    http://www.yhzq-blog.cc/fft总结/

    又来了,板子轰炸。。。
    快疯掉。。。

    FFT

    FFT,即为快速傅氏变换,
    是离散傅氏变换的快速算法,
    它是根据离散傅氏变换的奇、偶、虚、实等特性,
    对离散傅立叶变换的算法进行改进获得的。

    设x(n)为N项的复数序列,
    形如a0*x^0+a1*x+a2*a^2+…+an*x^n
    由DFT变换,任一x(m)的计算都需要N次复数乘法和N-1次复数加法,
    而一次复数乘法等于四次实数乘法和两次实数加法,
    一次复数加法等于两次实数加法,
    即使把一次复数乘法和一次复数加法定义成一次“运算”
    (四次实数乘法和四次实数加法),那么求出N项复数序列的x(m),
    即N点DFT变换大约就需要N^2次运算。
    当N=1024点甚至更多的时候,需要N2=1048576次运算,
    在FFT中,利用Wn的周期性和对称性,

    把一个N项序列(设N=2k,k为正整数),

    分为两个N/2项的子序列,

    每个N/2点DFT变换需要(N/2)^2次运算,

    再用N次运算把两个N/2点的DFT变换组合成一个N点的DFT变换。

    这样变换以后,总的运算次数就变成N*2(N/2)^2
    继续上面的例子,N=1024时,总的运算次数就变成了525312次,
    节省了大约50%的运算量。
    而如果我们将这种“一分为二”的思想不断进行下去,
    直到分成两两一组的DFT运算单元,
    那么N点的DFT变换就只需要Nlog^2N次的运算,
    N在1024点时,运算量仅有10240次,是先前的直接算法的1%,
    点数越多,运算量的节约就越大,这就是FFT的优越性。

    看起来好长一堆话,但是我还是认真的看下来了
    豁然开朗【baidu大法好】

    那问题来了,里面有概念看不懂啊
    比如说复数?
    那我们就需要初级数学普及

    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述

    这样我们就对FFT有一个初步了解了
    那么来一道例题?
    有助于背板子
    http://uoj.ac/problem/34
    题解另见blog

  • 相关阅读:
    final
    职场语句
    故事
    三个关键字
    关于重读字母去掉的代码
    Java书
    docker私库harbor的搭建
    配置允许匿名用户登录访问vsftpd服务,进行文档的上传下载、文档的新建删除等操作
    docker容器内外相互拷贝数据
    docker
  • 原文地址:https://www.cnblogs.com/wutongtong3117/p/7673403.html
Copyright © 2020-2023  润新知