DFT简化计算理解(FFT)

 

DFT:

WN=e^(-j*2*pi/N)

DFT复杂度o(N^2)

降低与N^2的依赖 使N = LM  (L^2+m^2 <= N^2)

N点DFT分解为M段L点DFT

一维的N点序列变为(L,M)二维序列,每一行分别进行DFT

举例两种一维到二维的映射关系

n = Ml+m

1 3 5 7 9
2 4 6 8 10

n = l+mL

1 2 3 4 5
6 7 8 9 10

与之所求的DFT 也可存入相对应的(q,p)矩阵中

以第一种(n = Ml+m)为例:k = Mp+q

找书麻烦这里给出推到:

重一维到二维

两种流程:

按列存入信号

计算每行M点DFT

乘以相位因子

计算每一列的L点DFT

按行读取所得数组

图示:

来看下基2_FFT算法:

上图的N/2点的dft可以分解为N/4的而N/4的DFT可以分解为N/8的……直到最后分解为2点的DFT

这儿的2点DFT其实是输出A+B,A-B两个值

为什么可以这样分解呢?其实他就是1个数学式子的’分解‘过程,来看下

N点的DFT是这玩意儿

将序列 奇偶分开

拆开成2km与1两项

X(2m) 可看为f(m)

而这个可看作一个新的N/2点DFT ------------可见N点的DFT已经分解为N/2点DFT

由采样定理,在频域上(N/2以为新的周期)F(k+N/2)=F(k),且, 。

所以得出下式:

复数乘法运算量 。而原始DFtT的量为N^2,当N够大时几乎减小了一半

注意 的确定,他是 分解出来的

这是举例看下8点DFT的奇偶分解

一级dft(抽第二级奇偶) 二级dft(抽第三极的奇偶) 第三极dft(最终)
0 0 0
4 2 1
2 4 2
6 6 3
1 1 4
5 3 5
3 5 6
7 7 7
     

可用二进制倒序实现 即011100变为001110,感觉镜像啦下

对比下

可看作一个4点DFT,只需求k=0,1的DFT,即可根据关系得出k=2,3

第二级 等于W(4,0),W(1,4)

DFT到FFT的理解的更多相关文章

  1. FS,FT,DFS,DTFT,DFT,FFT的联系和区别

    DCT变换的原理及算法 文库介绍 对于初学数字信号处理(DSP)的人来说,这几种变换是最为头疼的,它们是数字信号处理的理论基础,贯穿整个信号的处理. 学习过<高等数学>和<信号与系统 ...

  2. 一个蒟蒻对FFT的理解(蒟蒻也能看懂的FFT)

    建议同学们先自学一下"复数(虚数)"的性质.运算等知识,不然看这篇文章有很大概率看不懂. 前言 作为一个典型的蒟蒻,别人的博客都看不懂,只好自己写一篇了. 膜拜机房大佬 HY 一. ...

  3. Matlab 之 FFT的理解和应用

    网上看了一些大牛的关于FFT的见解,加上自己的一点儿理解,针对以下这几个问题来加深对FFT的理解. 不知道大家有没有类似以下几点的困惑: 问题的提出 对于1秒钟输出的连续信号,使用采样率Fs不同,就会 ...

  4. FS,FT,DFS,DTFT,DFT,FFT的联系和区别 数字信号处理

    DCT变换的原理及算法 文库介绍 对于初学数字信号处理(DSP)的人来说,这几种变换是最为头疼的,它们是数字信号处理的理论基础,贯穿整个信号的处理. 学习过<高等数学>和<信号与系统 ...

  5. [信号与系统]傅里叶变换、DFT、FFT分析与理解

    目录 一.前言 二.傅里叶变换 1.傅里叶级数 2.傅里叶级数系数求解 2.1.求解方法 2.2.三角函数的正交性 2.3.系数求解过程 2.4.关于傅里叶级数的个人感悟 3.引入复指数 4.总结 三 ...

  6. FFT算法理解与c语言的实现

    完整内容迁移至 http://www.face2ai.com/DIP-2-3-FFT算法理解与c语言的实现/ http://www.tony4ai.com/DIP-2-3-FFT算法理解与c语言的实现 ...

  7. 【总结】对FFT的理解 / 【洛谷 P3803】 【模板】多项式乘法(FFT)

    题目链接 \(\Huge\text{无图,慎入}\) \(FFT\)即快速傅里叶变换,用于加速多项式乘法. 如果暴力做卷积的话就是一个多项式的每个单项式去乘另一个多项式然后加起来,时间复杂度为\(O( ...

  8. DTFT、DFT、FFT

    对于一般的周期信号可以用一系列(有限个或者无穷多了)正弦波的叠加来表示.这些正弦波的频率都是某一个特定频率的倍数如5hz.2*5hz.3*5hz--(其中的 5hz 叫基频).这是傅立叶级数的思想.所 ...

  9. 【转】离散傅里叶变换-DFT(FFT)基础

    转:https://blog.csdn.net/zhangxz259/article/details/81627341 什么是离散傅里叶变换 matlab例子 本文是从最基础的知识开始讲解,力求用最通 ...

随机推荐

  1. openstack及组件简要介绍

    为什要用云? 一.简单的说就是对资源更加合理的分配,使用,比如硬件的数量,带宽等等这些,因为你不能机器买来不需要了再卖掉(当然也可以),带宽跟机房签合同得来一年的,中间不够了也不能加,超了也不退钱 二 ...

  2. 严谨的程序案例Api

    文档 功能 同步推荐关系 接口方法 syncRelation 参数描述 OriginalUsername 查询的用户用户名 RecommandUsername 推荐人用户名 返回值 status 1成 ...

  3. 阿里云OSS图片上传类

    1.阿里云基本函数 /** * 把本地变量的内容到文件 * 简单上传,上传指定变量的内存值作为object的内容 */ public function putObject($imgPath,$obje ...

  4. Populating Next Right Pointers in Each Node II ?

    void connect(TreeLinkNode *root) { if(root==NULL) return; if(root->left&&root->right) ...

  5. Kali下Ahmyth的使用

    项目地址:https://github.com/AhMyth/AhMyth-Android-RAT 下载后打开 安装nodejs,nodejs在官网下载,下载完后解压,切到bin目录下 设置全局 ro ...

  6. springboot成神之——log4j2的使用

    本文介绍如何在spring-boot中使用log4j2 说明 依赖 日志记录语句 log4j2配置文件 本文介绍如何在spring-boot中使用log4j2 说明 log4j2本身使用是非常简单的, ...

  7. C++深度解析教程学习笔记(5)面向对象

    1. 面向对象基本概念 (1)面向对象的意义在于 ①将日常生活中习惯的思维方式引入程序设计中 ②将需求中的概念直观的映射到解决方案中 ③以模块为中心构建可复用的软件系统 ④提高软件产品的可维护性和可扩 ...

  8. SELINUX配置

    今天试着将centos7的ssh默认端口改成1234,但改了后,SSHD服务竟然启动不了了.后来关了selinux测试,果然可以了.但这是运行环境,不能关,所以不得不配置semanage! 一.安装s ...

  9. java Web servlet简介及其生命周期

    Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态Web内容. 我们可 ...

  10. 2014蓝桥杯B组初赛试题《奇怪的分式》

    题目描述: 上小学的时候,小明经常自己发明新算法.一次,老师出的题目是:     1/4 乘以 8/5      小明居然把分子拼接在一起,分母拼接在一起,答案是:18/45 (参见图1.png)   ...