0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

实数DFT,复数DFT,FFT!FFT如何工作?

0BFC_eet_china 来源:未知 作者:李倩 2018-07-08 08:44 次阅读

实数DFT,复数DFT,FFT

FFT是计算DFT的快速算法,但是它是基于复数的,所以计算实数DFT的时候需要将其转换为复数的格式,下图展示了实数DFT和虚数DFT的情况,实数DFT将时域中N点信号转换成2个(N/2+1)点的频域信号,其中1个(N/2+1)点的信号称之为实部,另一个(N/2+1)点的信号称之为虚部,实部和虚部分别是正弦和余弦信号的幅度。

相比较而言,复数DFT将2个N点的时域信号转换为2个N点的频域信号。时域和频域中,1个N点信号是实部,另1个N点信号是虚部。如果要计算N点实数DFT,则将这个N个点作为时域中的实部,另取N个0点作为时域的虚部,用FFT计算这样一个复数信号的DFT得到2个N点的频域信号,1个N点是实部另1个N点是虚部,在这两个N点的信号中,从0到N/2个点就是须计算的N点实数的DFT频域。对于实数DFT来说,就像前几章讲的那样,它的频域也是离散周期信号,其周期为N点,从0到N/2点和1-N到-1点具有对称性,这个你可以从下面一张图看出。图中坐标不是用N表示是用采样频率的分数表示,如果你看不懂,请看前面几章。

所以你如果用FFT反变换计算的是实数时域,则要满足上图的对称性。

FFT如何工作

FFT的计算可以分为三步:首先将1个N点的时域信号分成N个1点的时域信号,然后计算这N个1点时域信号的频域,得到N个频域的点,然后将这个N个频域的点按照一定的顺序加起来,就得到了我们需要的频谱。这里每个点的意思是复数,都有实部和虚部。第一步的信号分解按照下面的规律执行:

可以看出它是按照比特反转顺序来分解的。第二步是计算每个点的频谱:这一步很简单,因为一个时域的点的频谱的数值就是它自己,所以这一步什么也不需做,但需明白这时候N个点不是时域信号了,而是频域信号。第三步是将这N个频域信号结合起来这一步是最麻烦的一步。就是和前面时域分解的顺序相反,将2个1点的频域信号变成1个2点的频域信号,再将2个2点的频域信号变成1个4点的频域信号,一直到结束。这里看下如何将2个4点的频域信号变成1个8点的频域信号。

首先对1个4点的频域信号进行复制,这样能稀释时域信号,也对另1个4点的频域信号进行复制不过复制之前需要乘上正弦函数,这样得到的稀释时域信号时经过了平移的,然后将这两个频域信号加起来,如下图所示。之所以这么做的目的是在时域分解的时候就是用这种交织的分解方式的。

以下是基本的运算,称为蝶形运算,它将2个1点的复数变成1个2点的复数。

以下是FFT运算的流程图

运算速度比较

如果用相关方法计算DFT:

FFT的速度还能更快

比如使用基4或者基8,这样不是2点一计算,而是4点或者8点一计算,可以提高速度。

FFT对DSP来说就像是晶体管电子学来说,都是领域的基础,每个人都知道怎么使用它们,但是只有很少一部分真正了解它们的原理。事实就是这样,你只要知道怎么用就可以了。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FFT
    FFT
    +关注

    关注

    15

    文章

    425

    浏览量

    58631
  • 信号
    +关注

    关注

    11

    文章

    2639

    浏览量

    75383
  • DFT
    DFT
    +关注

    关注

    2

    文章

    219

    浏览量

    22466

原文标题:FFT快速傅立叶变换的工作原理

文章出处:【微信号:eet-china,微信公众号:电子工程专辑】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    FFTDFT计算时间的比较及圆周卷积代替线性卷积的有效性实

    实验二 FFTDFT计算时间的比较及圆周卷积代替线性卷积的有效性实验:一 实验目的1:掌握FFT基2时间(或基2频率)抽选法,理解其提高减少乘法运算次数提高运算速度的原理。2:掌握FFT
    发表于 12-29 21:52

    DFT算法与FFT算法的优劣分析

    本文参考银河电气官网:DFT算法与FFT算法的优劣分析DFT与它的快速算法FFT相比可能更有优势,而FFT却存在某些局限性.在只需要求出部分
    发表于 05-22 20:43

    【安富莱——DSP教程】第32章 实数FFT的实现

    第32章实数FFT的实现 本章主要讲解实数的浮点和定点Q31,Q15的实现。关于这部分的知识点和函数的计算结果上,官方的文档有一些小错误,在章节中会跟大家详细讲述,还有一个要注意的问题,调用
    发表于 07-06 11:29

    请教一个关于fft算法的问题,DFT算法与FFT算法在应用上有什么区别?

    请教一个关于fft算法的问题,DFT算法与FFT算法在应用上有什么区别?
    发表于 06-02 11:55

    第32章 实数FFT的实现

    FFT-基2算法 32.3 复数FFT-基4算法 32.4 总结32.1 实数FFT32.1.1 描述 CMSIS DSP库里面包含一个专
    发表于 09-28 09:53

    【NanoPi K1 Plus试用体验】Python实现FFT

    DFT运算开始,说明FFT的基本原理。DFT的运算为:式中由这种方法计算DFT对于的每个K值,需要进行4N次实数相乘和(4N-2)次相加,对
    发表于 07-18 11:10

    FFT、PFT和多相位DFT滤波器组瞬态响应的比较

    摘要:本文简要地论述了FFT和多相位DFT滤波器组在响应方面的差异。一般而言,多相位DFT(甚至包括任何滤波器组,比如PFT)在稳态条件下有着很好的相邻信道抑制性能,而瞬态响应却很糟糕。这符合了滤波器冲激响应结论。
    发表于 03-11 13:17 2168次阅读
    <b class='flag-5'>FFT</b>、PFT和多相位<b class='flag-5'>DFT</b>滤波器组瞬态响应的比较

    DFT的快速算法-FFT

    DFT在数字信号处理中有很重要的作用,如频谱分析、FIR DF的实现、线性卷积等。一个重要的原因是DFT有高效算法。 为了了解高效算法的重要以及实现高效算法的思路,先介绍DFT的运算特
    发表于 09-07 23:59 57次下载

    DFTFFT的运算量

    首先给大家提供DFTFFT的运算量的教程,内容有直接用DFT计算运算量与用FFT计算的运算量比较和多种DFT算法(时间抽取算法DIT算法,
    发表于 09-08 00:01 71次下载

    fft原理及实现

    FFT是一种DFT的高效算法,称为快速傅立叶变换(fast Fourier transform)。FFT算法可分为按时间抽取算法和按频率抽取算法,先简要介绍FFT的基本原理。从
    发表于 12-19 16:18 203次下载

    离散傅里叶变换(DFT)及其快速算法(FFT)

    第2章-离散傅里叶变换(DFT)及其快速算法(FFT)
    发表于 12-28 14:23 0次下载

    FFT太慢太死板?滑动DFT让计算飞起来!

    滑动DFT的推导是相当简单的,并且和DFT完全等价。也就是说,滑动DFT算法相比传统DFTFFT算法没有信息丢失或失真。下面有完整的推导过
    的头像 发表于 02-19 01:01 9767次阅读
    <b class='flag-5'>FFT</b>太慢太死板?滑动<b class='flag-5'>DFT</b>让计算飞起来!

    FFT(快速傅里叶变换)波形分析

    FFT的替代方案是离散傅里叶变换(DFT)。DFT 允许您精确定义计算转换的范围,从而消除了窗口的需要。不利的一面是,DFT的计算速度比FFT
    的头像 发表于 12-02 16:16 1.4w次阅读
    <b class='flag-5'>FFT</b>(快速傅里叶变换)波形分析

    FFT快速傅立叶变换的工作原理

    FFT是计算DFT的快速算法,但是它是基于复数的,所以计算实数DFT的时候需要将其转换为复数的格
    的头像 发表于 05-05 09:54 994次阅读
    <b class='flag-5'>FFT</b>快速傅立叶变换的<b class='flag-5'>工作</b>原理

    fftdft的区别联系

    fftdft的区别联系 快速傅里叶变换(FFT)和离散傅里叶变换(DFT)是信号处理和数学计算领域中最常见的技术之一。它们都是用于将离散信号从时域转换到频域的方法,而在此转换过程中,
    的头像 发表于 09-07 16:43 3903次阅读