转载地址:http://blog.renren.com/share/408963653/15068964503(作者 :  徐可扬)

有没有!!!

其实我感觉这个学期算法最难最搞不懂的绝对不是动态规划啊!绝对是快速傅里叶变换啊!最近才弄懂有木有。

有不少人问我,于是干脆就写成日志吧。

首先明确一下基本概念吧,就三点,DFT,FFT,蝴蝶操作。

DFT(离散傅里叶变换):书上写的最清楚的一句话叫做,向量y=(y0,y1,……yn-1)是系数向量a=(a0,a1,,……,an-1)的离散傅里叶变换,也写作y=DFTn(a)。说白了,就是求n个y值,但是n个自变量x的取值很特殊

FFT(快速傅里叶变换):这个名词好理解,就是很快地算出这n个y值。一般我们计算n个n次的多项式值需要O(n^2)的时间。现在用FFT可以减少到O(n*logn)。具体原理一两句话说不完……要考的话也太理论性了…

蝴蝶操作:这个应该是让大家最费解的…他就是一个FFT得实际应用…因为这是实践的东西所以要掌握。书上有一个图,虽然感觉看书不一定看的怎么懂,但是这个图还是要记住。不过我觉得从下往上写看起来更舒服。

转过来以后,向左边是加,向右边是减。谨记啊!

突然发现好难解释,先把宋老师课件里面上次坑爹的没有答案的课后练习拿来看看。

我这里a0,a1,a2……就不调换顺序了,其实是一样的,格式不同罢了。

a=(0,1)

经过FFT,Y=(1,-1),这个就是书上最简单的应用了。

再来一个简单的 a=(1,0).

y=(1,1).

我觉得要考试一般就是考四个的吧,两个太简单了,8个的太复杂了(我后面有写)

例子

a=(1,1,0,1)

y=(3,1,-1,1)  注意算出来是 y0,y2,y1,y3的顺序。

a=(0,1,2,3)

y=(6,-2-2i,  -2 , -2+2i).

注意右上角的蝶形运算中的旋转因子变成了(恩!?怎么不能插公式啊!)w(1/4)=i。。。那是因为在a0,a2的蝶形运算中我们多乘了(n/2),这里n=2.(这个我解释不来…不过这个数是固定的,背就行了)。

那我上个八个的,有点复杂,估计可能不会考

a=(0,1,2,3,4,5,6,7).

y的顺序如图

告诉大家一个比较好的办法判断是否算对了,直接人肉使用O(n^2)算法就好了,举四个的例子。就是把x得值带入多项式y=a3*x^3+a2*x^2+a1*x+a0算出y值什么的。x0=1,x1=i,x2=-1,x3=-i带入。这样的话,其实考察算没算对完全是个伪命题吗……

再提醒一次,左加右减哦!

最后再说一下这玩意有什么用,什么信号学的废话就不说了。无非是FFT用N*LogN时间算出点值方便用点值法算出多项式乘法的系数结果,这个大家看书上510的图我觉得就能理解了。插值神马的,背公式吧……虽然我也不记得了。

时间有点紧迫,感觉写的巨烂无比,大神们如果发现写错了留言给我立马改,关键不要误人子弟……

这有帮助的请让我知道。感谢大家!

If it helps you , let me know. Thank you !

傅里叶:有关FFT,DFT与蝴蝶操作(转 重要!!!!重要!!!!真的很重要!!!!)的更多相关文章

  1. 初探 FFT/DFT

    有用的学习链接&书籍 傅立叶变化-维基百科 离散傅立叶变化-维基百科·长整数与多项式乘法 维基百科看英文的更多内容&有趣的图 快速傅立叶变化-百度百科,注意其中的图! 组合数学(第4版 ...

  2. 信号基础知识--FFT DFT

    clc;close all;clear all; f0=10; fs=100;     %采样率 t=1/fs:1/fs:2;         %共两秒钟,共200个采样点.采样间隔T=1/100 y ...

  3. ubuntu16.04——WingIDE安装 操作服务器是一件很好玩的事情

    1.在服务器上部署环境时,区分linux 系统和winddos系统 2.下载安装包: 3.输入命令操作 4.进入相对应的目录下: 5.命令 6.发生错误,更新环境 7.安装成功

  4. 【分享】 封装js操作textarea 方法集合(兼容很好)。

    请使用下面的btn操作. 虽然你现在看来没什么用,当要用的时候又到处找资料,还不如现在收集一下.         在DOM里面操作textarea里面的字符,是比较麻烦的. 于是我有这个封装分享给大家 ...

  5. canvas调用scale或者drawImage图片操作后,锯齿感很明显的解决

    <script type="text/javascript"> //解决canvas画画图片 var mengvalue = -1; var phoneWidth = ...

  6. 【转】ini载入保存类,操作INI配置文件方便的很

    /****************************************************************** * * ^_^ 恶猫 独门商标 挖哈哈 * * QQ:\> ...

  7. [Reprinted] 使用Spring Data Redis操作Redis(一) 很全面

    Original Address: http://blog.csdn.net/albertfly/article/details/51494080

  8. 面试题: 数据库操作面试 已看1 很典型的sql面试题

    摘要:今天参加了大展公司的一个电话面试,那位先生首先问我查询一个表的问题,条件是:1.一个数据表,有username字段.2.查询数据表中姓名姓张的.姓李的.姓刘的总数,并展现在一张表中.我当时就糊涂 ...

  9. python专题文件操作

    一 前言 本篇文章主要对文件操作进行说明,知识追寻者创作必属精品,读完本篇你将获得基础的文件操作能力,深入理解文件操作API,基础真的很重要,不管学什么知识,故看知识追寻者的专题系列真的很不错. 二 ...

随机推荐

  1. GitHub上那些值得一试的JAVA开源库

    作为一名程序员,你几乎每天都会使用到GitHub上的那些著名Java第三方库,比如Apache Commons,Spring,Hibernate等等.除了这些,你可能还会fork或Star一些其他的开 ...

  2. 使用Html5+C#+微信 开发移动端游戏详细教程 :(五)游戏图像的加载与操作

    当我们进入游戏时,是不可能看到所有的图像的,很多图像都是随着游戏功能的打开而出现, 比如只有我打开了"宝石"菜单才会显示宝石的图像,如果是需要显示的时候才加载, 会对用户体验大打折 ...

  3. Solr官方文档翻译-About & Getting Started

    关于(About) 官方文档介绍了所有的Apache Solr实现的重要特性和功能.它是免费的,可以到http://lucene.apache.org/solr/下载. 为了更加的深入和广泛,设计成一 ...

  4. 在VS中使用TinyFox调试OWIN应用(转)

    在很早一段时间之前,我曾经写过一篇关于Katana的使用方法的文章<如何安装并简单的使用OwinHost——Katana>,上面就有介绍如何在VS中调试使用Katana作为Host的App ...

  5. Http客户端识别的方法

      Http用户识别的机制方法分为如下几种: 1).承载用户身份的HTTP首部 2).客户端IP地址跟踪,根据客户端IP地址进行识别 3).用户登录,用认证方式设别用户 4).使用胖URL,一种在UR ...

  6. sprint个人总结+读书博客

    读书感想:    第8章讲了需求分析,在我的日常软件编写中,肯定需要需求分析的,一个没有需求的软件,编写出来也没有什么意义,只能是丢在一个角落里发霉.需求有各种各样,要怎样才能满足客户的需求呢,那就要 ...

  7. XSS 和 CSRF 攻击

    web安全中有很多种攻击手段,除了SQL注入外,比较常见的还有 XSS 和 CSRF等 一.XSS(Cross Site Scripting)跨站脚本 XSS其实就是Html的注入问题,攻击者的输入没 ...

  8. WebApi 登录身份验证

    前言:Web 用户的身份验证,及页面操作权限验证是B/S系统的基础功能,一个功能复杂的业务应用系统,通过角色授权来控制用户访问,本文通过Form认证,Mvc的Controller基类及Action的权 ...

  9. 【原创】记一次Sql2008R2的数据库订阅发布遇到的问题!

    1.首先新建一个空的数据库 CreditTest,里面没有任何表结构,视图,数据等. 2.在已连接的服务器的下方找到“复制”选项,然后兴建发布: ...(新建发布成功) ...(新建订阅成功) 3.问 ...

  10. 【循序渐进学Python】2. Python中的序列——列表和元组

    序列概览 在Python中有六种内建的序列:列表.元组.字符串.Unicode字符串.buffer对象和xrange对象.在这里暂时只讨论列表和元组.列表和元组的主要区别在于:列表可以修改,元组(不可 ...