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

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

3天内不再提示

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

jf_78858299 来源:声振之家 作者:声振之家 2023-05-05 09:54 次阅读

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方法计算DFT:

图片

图片

不过,FFT的速度还能更快。 比如使用基4或者基8,这样不是2点一计算,而是4点或者8点一计算,可以提高速度。

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

事实就是这样,你只要知道怎么用就可以了。

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

    关注

    15

    文章

    434

    浏览量

    59313
  • DFT
    DFT
    +关注

    关注

    2

    文章

    224

    浏览量

    22680
  • 傅里叶
    +关注

    关注

    0

    文章

    59

    浏览量

    20448
收藏 人收藏

    评论

    相关推荐

    快速傅立叶变换(FFT)算法实验

    本帖最后由 mr.pengyongche 于 2013-4-30 02:23 编辑 快速傅立叶变换(FFT)算法实验一、摘
    发表于 12-21 10:54

    如何使用快速傅立叶变换FFT)的8590 C/E/L系列频谱分析仪中的FFT函数?

    本产品说明说明了如何使用快速傅立叶变换FFT)的8590 C/E/L系列频谱分析仪中的FFT函数。FF
    发表于 04-04 16:50

    浅懂示波器FFT快速傅立叶变换功能及运用

    大多数示波器上都有个FFT功能,也叫快速傅立叶变换,但很多人不了解这个功能是做什么用的,百度以后又会遇到各种各样的高数公式,看的一头雾水,遂而放弃这块知识。我们来看百度百科的解释:
    发表于 01-14 17:00

    示波器FFT快速傅立叶变换不会用?看完这篇帖子,我彻底悟了

    大多数示波器上都有个FFT功能,也叫快速傅立叶变换,但很多人不了解这个功能是做什么用的,百度以后又会遇到满屏的高数公式,看得一头雾水,继而以放弃告终。先来看看百度百科对
    发表于 09-22 13:42

    快速傅立叶变换开发指南

    快速傅立叶变换开发指南:The Xilinx® LogiCORE™ IP Fast Fourier Transform (FFT) is a computation
    发表于 12-31 15:19 35次下载

    快速傅立叶变换FFT)的Nios II实现

    快速傅立叶变换FFT)的Nios II实现 随着数字电子技术的发展,数字信号处理的理论和技术广泛地应用于通讯、语音处理、计算机和多媒体等领域。
    发表于 02-09 09:38 81次下载

    基于FPGA的快速傅立叶变换

    摘要:在对FFT快速傅立叶变换)算法进行研究的基础上,描述了用FPGA实现FFT的方法,并对其中的整体结构、蝶形单元及性能等进行了分析。
    发表于 06-20 14:13 1099次阅读

    1024点FFT快速傅立叶变换

    Xilinx FPGA工程例子源码:1024点FFT快速傅立叶变换
    发表于 06-07 14:13 33次下载

    Xilinx 的IP:1024点FFT快速傅立叶变换

    Xilinx FPGA工程例子源码:Xilinx 的IP:1024点FFT快速傅立叶变换
    发表于 06-07 15:07 51次下载

    DSP进行浮点快速傅立叶变换剖析

    前言本文目的是演示如何使用STM32F30x 内部的DSP 进行浮点快速傅立叶变换FFT),为联系实际应用
    的头像 发表于 09-18 06:44 9464次阅读

    简述FPGA的快速傅立叶变换

    摘要:在对FFT快速傅立叶变换)算法进行研究的基础上,描述了用FPGA实现FFT的方法,并对其中的整体结构、蝶形单元及性能等进行了分析。
    的头像 发表于 05-27 11:21 2214次阅读
    简述FPGA的<b class='flag-5'>快速</b><b class='flag-5'>傅立叶</b><b class='flag-5'>变换</b>

    看完学会速傅立叶变换FFT

    FFT快速傅立叶变换。在很多计算机领域都用用处,例如数字图像处理、计算机网络。但他在算法竞赛中主要是用于多项式和生成函数相关的题目。
    的头像 发表于 05-05 09:48 921次阅读
    看完学会速<b class='flag-5'>傅立叶</b><b class='flag-5'>变换</b><b class='flag-5'>FFT</b>

    我印象中的快速傅里叶变换 (FFT)

    首先,FFT是离散傅立叶变换 (DFT) 的快速算法,那么说到FFT,我们自然要先讲清楚傅立叶
    的头像 发表于 05-05 09:57 1141次阅读
    我印象中的<b class='flag-5'>快速</b>傅里叶<b class='flag-5'>变换</b> (<b class='flag-5'>FFT</b>)

    浅懂示波器FFT快速傅立叶变换功能及运用

    大多数示波器上都有个FFT功能,也叫快速傅立叶变换,但很多人不了解这个功能是做什么用的,百度以后又会遇到各种各样的高数公式,看的一头雾水,遂而放弃这块知识。我们来看百度百科的解释:
    的头像 发表于 11-08 15:01 6621次阅读
    浅懂示波器<b class='flag-5'>FFT</b><b class='flag-5'>快速</b><b class='flag-5'>傅立叶</b><b class='flag-5'>变换</b>功能及运用

    如何使用SBench 6对数字化仪采集信号进行处理?(三)——快速傅立叶变换FFT

    上一篇文章介绍了德思特SBench 6的平均运算功能。本章将继续为大家介绍SBench 6的快速傅立叶变换FFT)。
    的头像 发表于 01-23 10:38 564次阅读
    如何使用SBench 6对数字化仪采集信号进行处理?(三)——<b class='flag-5'>快速</b><b class='flag-5'>傅立叶</b><b class='flag-5'>变换</b>(<b class='flag-5'>FFT</b>)