FFT算法理解

1、 DFT运算及性质

DFT计算量很大,且随N的增多急剧增加,计算量和成正比,要降低计算复杂度,就需要将DFT分解成小点数的DFT处理。在DFT分解处理中,出现了“按时间抽取的FFT”、“按频率抽取的FFT”,其中“按频率抽取的FFT”使用比较多,特别是基于“分裂机”的“频率抽取FFT”相对于常规的“按频率抽取”的基2 FFT要更省计算量。

1、 按时间抽取的基2 FFT算法

所谓的按“时间”抽取还是按“频率”抽取指的是在最终推到公式中是对时域数据进行分组还是对频域数据进行分组。按时间抽取的基2 FFT算法的公式中是对时域数据进行奇偶分组,公式如下:

只需要时域偶数项数据计算即可得到,只需要时域的奇数项数据计算即可,但是需要计算N个,利用可以减少一半的计算量。下面是推导:

到这里我们会发现,通过计算时域数据偶数点位置的N/2点DFT,和计算奇数位置的N/2点DFT就可以得到N点数据的DFT,即将一个N点的DFT运算拆分成了两个N/2点的DFT运算,这样的话N点的DFT运算只是N/2点DFT运算的2倍(除去中的加法和乘法运算有N个乘法和N个加法),这样的话相对于DFT计算量按增长方式,有了很大的优化。

8点DFT

这样通过将N点时域数据计算得到的N/2点再通过计算这两个N/2点的DFT就可以得到原来N点数据得到DFT,计算复杂度也现对于直接计算N点DFT的少了一半(除去计算和的乘法加法)

原文地址:https://www.cnblogs.com/yuandonghua/p/10385899.html

时间: 2024-10-11 01:23:01

FFT算法理解的相关文章

Matlab 之 FFT的理解和应用

网上看了一些大牛的关于FFT的见解,加上自己的一点儿理解,针对以下这几个问题来加深对FFT的理解. 不知道大家有没有类似以下几点的困惑: 问题的提出 对于1秒钟输出的连续信号,使用采样率Fs不同,就会得到不同的采样序列.在计算N点FFT之后得到N点的复数,幅频图中横坐标如何与我实际的频率相对应? FFT之后的幅频响应图,对应的幅值到底有什么含义,我们可以通过这个对应频率点的幅值推出原始信号的相关特性吗?     问题的解释 傅里叶是法国数学家和物理学家的名字,英语原名是Jean Baptiste

2维FFT算法实现——基于GPU的基2快速二维傅里叶变换

上篇讲述了一维FFT的GPU实现(FFT算法实现——基于GPU的基2快速傅里叶变换),后来我又由于需要做了一下二维FFT,大概思路如下. 首先看的肯定是公式: 如上面公式所描述的,2维FFT只需要拆分成行FFT,和列FFT就行了,其中我在下面的实现是假设原点在F(0,0),由于我的代码需要原点在中心,所以在最后我将原点移动到了中心. 下面是原点F(0,0)的2维FFT的伪代码: //C2DFFT //被执行2DFFT的是一个N*N的矩阵,在source_2d中按行顺序储存 //水平方向FFT f

msp430学习笔记-实现开方log等计算及FFT算法(待续)

MSP430 FFT算法实现 http://bbs.21ic.com/icview-391532-1-1.html http://blog.sina.com.cn/s/blog_6cd2030b01018fp8.html FFT算法的物理意义 http://blog.csdn.net/hzn407487204/article/details/6249945 FFT算法的完整DSP实现 http://blog.csdn.net/xiahouzuoxin/article/details/979045

Horn–Schunck 光流法与其算法理解(gup cuda)

1. 基于Horn-Schunck模型的光流算法 1.1     光流的约束条件 光流 的假设条件认为图像序列,在时间t 的某一像素点与在时间t+1的这一像素点的偏移量保持不变,即 .这就是灰度值守恒假设,通过Taylor展开,就能得到光流的约束条件(OFC): ,其中下标表示图像的梯度. 1.2     Horn-Schunck 模型 1981年,Horn和Schunck根据同一个运动物体的光流场具有连续.平滑的特点, 提出一个附加约束条件,将光流场的整体平滑约束转换为一个变分的问题.它的能量

FFT算法的完整DSP实现(转)

源:FFT算法的完整DSP实现 傅里叶变换或者FFT的理论参考: [1] http://www.dspguide.com/ch12/2.htm The Scientist and Engineer's Guide to Digital Signal Processing,   By Steven W. Smith, Ph.D. [2] http://blog.csdn.net/v_JULY_v/article/details/6196862,可当作[1]的中文参考 [3] 任意一本数字信号处理教

关于SVM数学细节逻辑的个人理解(三) :SMO算法理解

第三部分:SMO算法的个人理解 接下来的这部分我觉得是最难理解的?而且计算也是最难得,就是SMO算法. SMO算法就是帮助我们求解: s.t.   这个优化问题的. 虽然这个优化问题只剩下了α这一个变量,但是别忘了α是一个向量,有m个αi等着我们去优化,所以还是很麻烦,所以大神提出了SMO算法来解决这个优化问题. 关于SMO最好的资料还是论文<Sequential Minimal Optimization A Fast Algorithm for Training Support Vector

[数据挖掘] - 聚类算法:K-means算法理解及SparkCore实现

聚类算法是机器学习中的一大重要算法,也是我们掌握机器学习的必须算法,下面对聚类算法中的K-means算法做一个简单的描述: 一.概述 K-means算法属于聚类算法中的直接聚类算法.给定一个对象(或记录)的集合,将这些对象划分为多个组或者“聚簇”,从而使同组内的对象间比较相似而不同组对象间差异比较大:换言之,聚类算法就是将相似的对象放到同一个聚簇中,而将不相似的对象放到不同的聚簇中.由于在聚类过程中不使用到类别标签,所以相似性的概念要基于对象的属性进行定义.应用不同则相似性规则和聚类算法一般不太

几大排序算法理解

1.插入排序算法 跟我们平时打扑克时排序相似,左手先拿起一张牌,不需要比较,当拿起第二张牌时需要和之前的牌进行比较,如果小于之前的牌i,并且有大于牌i-1时,i就是该张牌要插入的位置,牌i及其以后的牌需要给它腾位置 a[k+1] = a[k];腾好位置之后就把它插入到i的位置即可. 实现算法: void InsertSort(int s[],int n) { int i, j, k; for(i = 1;i<n;i++) { //为a[i]在前面的a[0...i-1]有序区间中找一个合适的位置(

KNN算法理解

一.算法概述 1.kNN算法又称为k近邻分类(k-nearest neighbor classification)算法. 最简单平庸的分类器或许是那种死记硬背式的分类器,记住全部的训练数据,对于新的数据则直接和训练数据匹配,假设存在同样属性的训练数据,则直接用它的分类来作为新数据的分类.这样的方式有一个明显的缺点,那就是非常可能无法找到全然匹配的训练记录. kNN算法则是从训练集中找到和新数据最接近的k条记录,然后依据他们的主要分类来决定新数据的类别.该算法涉及3个主要因素:训练集.距离或相似的