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

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

3天内不再提示

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

薛梦雅 来源:jf_76563207 作者:jf_76563207 2025-08-04 09:30 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

一概述

在谐波分析仪中,我们常常提到的两个词语,就是DFT算法与FFT算法,那么一款功率分析仪/谐波分析仪采用DFT算法或者FFT算法,用户往往关注的是能否达到所要分析谐波次数的目的,而并未考虑两种算法之间有什么不同,采用相关算法的依据。下面就来介绍一下两种算法的不同以及适用的一些场合。

DFT算法,是连续傅里叶变换在时域和频域上都离散的形式,将时域信号的采样变换为在离散时间傅里叶变换频域的采样。

FFT算法,是离散傅里叶变换的快速算法,它是根据离散傅里叶变换的奇、偶、虚、实等特性,对离散傅里叶变换的算法进行改进获得的。它对傅氏变换的理论没有新的算法发现,但是对于在计算机系统或者说数字系统中应用离散傅里叶变换,可以说进了一大步。

二DFT与FFT的比较

01运算量

一般来说,FFT比DFT运算量小得多,N点的FFT需要做(N/2)log2N次乘法运算,而N点DFT需要做N2次乘法运算,由此看来N点 DFT运算量大约是FFT的2N/log2N倍,例如对1 024点的变换,DFT大约是FFT的200倍。然而实际应用时存在下列情况:

① 实际应用时DFT中的乘法可以是实数和复数相乘,原因是输入信号可以是实数,而FFT只能是复数和复数的乘法,原因是FFT是分级运算的,中间运算过程都是复数运算,由此来看DFT的运算量大约是FFT的Nlog2N倍,而不是2N/log2N倍;

② 实际应用时往往只关心整个频谱中的某一部分,甚至是只关心某些个别频点的谱线。DFT的特点是可按式(1)单独计算某一部分的谱线,而直接进行 FFT的算法必须计算整个频谱后才能得到需要的那一部分频谱,实际上已造成了浪费。如果N点的变换中只关心其中的M个频点或称M条谱线,那么实际DFT的运算量大约是FFT的M/N•N/log2N倍,即Mlog2N倍.例如对1 024点的变换,只需关心10条谱线,那么直接用DFT和用FFT的运算量是相同的。因此,实际应用时DFT与FFT相比可能并没有那么慢,甚至有可能比FFT快。

02点数或采样率的可选性

对DFT来讲,其变换点数可任意选定,如实际应用时采样率已确定为1 000 Hz,如选变换点数为1 000点,那么每条谱线正好可落在整数频点上。FFT的变换点数必须是有规律的,如基数为2算法的FFT其点数必须是2M,如1 024点、4 096点等。在实际应用时为分析方便,采样率往往要定为变换点数的倍数,如2 048 Hz、8 192 Hz,以避免变换后的频谱落在复杂的带小数点的频点上。因此实际应用时FFT在变换点数选择或采样率选择上可能会带来局限性。

03实时性

DFT运算可以用采一点后立即进行相乘、累加运算的方法,即可以采一点算一点,从采样结束到DFT变换结束只需要一个点的运算时间。而FFT运算必须在全部点采集结束后才能开始进行计算,因此从某种角度讲DFT的实时性优于FFT。

04数据内存开销

对N点DFT来讲,如只需其中的M个频点,那么在计算时至少需2M个单元的数据内存,对N点FFT来讲则至少需2N个单元的数据内存,另外现有的FFT程序一般需要将系数放在数据内存区,因此需另选N个单元的数据内存,故DFT有可能比FFT更节省数据内存。

05程序的复杂性

DFT计算程序非常简单而且可以非常方便地在非DFT专用芯片上实现,而FFT程序较为复杂。

06动态范围或抗溢出性

在定点运算的场合,DFT较FFT更容易实现多精度的运算, 例如在TI公司的16位定点DSP处理器中,采用的数据和系数为16位,而相乘并累加的结果可设为双字节即32位,一般来讲设计合理的话不会产生计算溢出的现象,免去了复杂的溢出控制,同时输入输出信号可保持较好的动态范围,FFT在程序中有防溢出的措施,然而在定点运算的场合点数越多输入信号的动态范围越小。

三结论

在某些具体的应用场合,DFT与它的快速算法FFT相比可能更有优势,而FFT却存在某些局限性。在只需要求出部分频点的频率谱线时DFT的运算时间大为减少,所需的数据内存量也大为减小。DFT与FFT相比还具有变换点数或采样率选择更灵活、实时性更好、更容易控制溢出和动态范围、运算编程简单、可方便地在非DSP芯片中编程实现等优点。因此在实际应用中可以从具体条件出发来比较、选择DFT或FFT,而不应片面地由于FFT是所谓的DFT的快速算法而只选用FFT。

另外FFT运算速度快,但是,对样本序列的长度做出了要求,即要求样本序列的数量必须是2的N次幂,正确的傅里叶变换,样本序列应该是代表一个或整数个信号周期。对于固定频率的交流电测量,可以使采样频率为信号频率的M倍,且M=2^N。

但是,对于变频器输出测量,如果测量前基波未知,那么,就无法同时满足样本数为2^N和整周期的要求。DFT运算速度远远低于FFT,但是,对样本数没有要求。基于变频电量测量特殊性以及两种算法的特点,湖南银河电气有限公司的WP4000变频功率分析仪采用高性能的嵌入式微处理器,采用DFT算法进行谐波分析仪,由于强大的硬件支撑,在保证DFT算法运算量的同时,也兼顾了运算速度。这样,对于被测对象的样本序列长度要求低,处理起来更加灵活方便。

审核编辑 黄宇

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

    关注

    23

    文章

    4760

    浏览量

    97123
  • FFT
    FFT
    +关注

    关注

    15

    文章

    452

    浏览量

    62581
  • DFT
    DFT
    +关注

    关注

    2

    文章

    236

    浏览量

    23882
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    SM4算法实现分享(一)算法原理

    SM4分组加密算法采用的是非线性迭代结构,以字为单位进行加密、解密运算,每次迭代称为一轮变换,每轮变换包括S盒变换、非线性变换、线性变换、合成变换。加解密算法与密钥扩展都是采用32轮非线性迭代结构
    发表于 10-30 08:10

    SM4算法原理及分享1

    SM4算法是一种分组密码算法。其分组长度为128bit,密钥长度也为128bit。加密算法与密钥扩展算法均采用32轮非线性迭代结构,以字(32位)为单位进行加密运算,每一次迭代运算均
    发表于 10-30 06:54

    国密系列算法简介及SM4算法原理介绍

    在后续分享中分析AES和SM4算法的共同特点和可重构方法。 二、 SM4算法原理 图2所示为128位输入、128位密钥和128位输出的SM4算法流程图,共有32轮操作。SM4在每轮
    发表于 10-24 08:25

    加密算法的应用

    加密是一种保护信息安全的重要手段,近年来随着信息技术的发展,加密技术的应用越来越广泛。本文将介绍加密算法的发展、含义、分类及应用场景。 1. 加密算法的发展 加密算法的历史可以追溯到古代。在
    发表于 10-24 08:03

    AES和SM4算法的可重构分析

    一、AES和SM4算法特点分析 基于前面几篇分享,我们对AES和SM4的算法流程有了较为清晰的认识,接下来对AES和SM4算法的共同点进行分析
    发表于 10-23 07:26

    泰克示波器FFT功能详解

    的原理、设置方法及典型应用场景,助力高效使用这一强大工具。   一、理解FFT:信号分析的“数学显微镜” 傅里叶变换的核心思想是:任何复杂信号均可分解为不同频率的正弦波叠加。泰克示波器的FFT功能通过
    的头像 发表于 09-23 17:52 838次阅读
    泰克示波器<b class='flag-5'>FFT</b>功能详解

    Tektronix泰克MDO32示波器FFT功能使用指南

    应用于信号失真分析、噪声排查、电磁兼容性测试等场景。本文将详细介绍MDO32示波器的FFT功能使用步骤、参数设置技巧及典型应用案例,帮助用户高效掌握这一关键功能。   二、FFT功能基础 1. 什么是
    的头像 发表于 08-18 17:02 810次阅读
    Tektronix泰克MDO32示波器<b class='flag-5'>FFT</b>功能使用指南

    FPGA通信设计常见问答

    FFT(快速傅里叶变换)是离散傅里叶变换(DFT)的高效实现算法,它的核心作用是快速将信号从时域转换到频域,从而简化信号分析和处理的过程。
    的头像 发表于 07-21 16:05 2366次阅读

    进群免费领FPGA学习资料!数字信号处理、傅里叶变换与FPGA开发等

    的实现、多抽样率数字信号系统、DFTFFT算法、未来很可能实现的高级算法以及自适应滤波器等。给出了Verilog源代码和术语。 02、数字信号处理――原理、
    发表于 04-07 16:41

    PID控制算法的C语言实现:PID算法原理

    在工业应用中 PID 及其衍生算法是应用最广泛的算法之一,是当之无愧的万能算法,如果能够熟练掌握 PID 算法的设计与实现过程,对于一般的研发人员来讲,应该是足够应对一般研发问题了,而
    发表于 02-26 15:24

    DFT在生物信号分析中的应用

    DFT(离散傅里叶变换)在生物信号分析中有着广泛的应用。生物信号,如心电图(ECG)、脑电图(EEG)、肌电图(EMG)等,是生物体内产生的电信号,它们携带着生命活动和生理状态的重要信息。DFT作为
    的头像 发表于 12-20 09:28 1548次阅读

    DFT的优缺点比较 DFT在机器学习中的应用

    信号处理中的许多应用来说是一个重要的特性。 计算效率 :通过快速傅里叶变换(FFT算法DFT的计算效率大大提高,使其在实际应用中更加实用。 广泛的应用 :DFT在信号处理、图像处理
    的头像 发表于 12-20 09:22 3399次阅读

    DFT在图像处理中的作用 DFT在音频信号处理中的应用

    处理中的几个主要作用: 频域滤波 :DFT允许我们分析图像的频率成分,从而可以设计滤波器来增强或抑制特定频率的信号,例如低通滤波器可以减少图像噪声,而高通滤波器可以增强边缘。 图像压缩 :在JPEG等图像压缩算法中,
    的头像 发表于 12-20 09:18 1837次阅读

    如何使用DFT进行频谱分析

    使用离散傅里叶变换(DFT)进行频谱分析是一个将信号从时域转换到频域,并分析信号在频域上的特性的过程。以下是使用DFT进行频谱分析的基本步骤
    的头像 发表于 12-20 09:16 2660次阅读

    DFT在信号处理中的应用 DFTFFT的区别

    DFT在信号处理中的应用 离散傅里叶变换(Discrete Fourier Transform,DFT)是信号处理中一个非常重要的工具。它允许我们将信号从时域转换到频域,从而分析信号的频率成分。以下
    的头像 发表于 12-20 09:13 4029次阅读