14_FFT算法的DSP实现

合集下载

(完整word版)基于DSP的快速傅立叶变换(FFT)的实现(汇编语言)

(完整word版)基于DSP的快速傅立叶变换(FFT)的实现(汇编语言)

快速傅立叶变换(FFT )的实现一、实验目的1.了解FFT 的原理及算法;2.了解DSP 中FFT 的设计及编程方法;3.熟悉FFT 的调试方法;二、实验原理FFT 是一种高效实现离散付立叶变换的算法,把信号从时域变换到频域,在频域分析处理信息。

对于长度为N 的有限长序列x (n ),它的离散傅里叶变换为:(2/)j N nk N W e π-=,称为旋转因子,或蝶形因子。

在x (n )为复数序列的情况下,计算X (k ):对某个k 值,需要N 次复数乘法、(N -1)次复数加法;对所有N 个k 值,需要2N 次复数乘法和N (N -1)次复数加法。

对于N 相当大时(如1024)来说,直接计算它的DFT 所作的计算量是很大的,FFT 的基本思想在于: 利用2()j nk N N W e π-=的周期性即:k N k N N W W +=对称性:/2k k N N N W W +=-将原有的N 点序列分成两个较短的序列,这些序列的DFT 可以很简单的组合起来得到原序列的DFT 。

按时间抽取的FFT ——DIT FFT 信号流图如图5.1所示:图5.1 时间抽取的FFT —DIT FFT 信号流图FFT 算法主要分为以下四步。

第一步 输入数据的组合和位倒序∑=-=10)()(N n nk N W n x k X把输入序列作位倒序是为了在整个运算最后的输出中得到的序列是自然顺序。

第二步 实现N 点复数FFT第一级蝶形运算;第二级蝶形运算;第三级至log2N 级蝶形运算;FFT 运算中的旋转因子N W 是一个复数,可表示:为了实现旋转因子N W 的运算,在存储空间分别建立正弦表和余弦表,每个表对应从0度到180度,采用循环寻址来对正弦表和余弦表进行寻址。

第三步 功率谱的计算X (k )是由实部()R X k 和虚部()I X k 组成的复数:()()()R I X k X k jX k =+;计算功率谱时只需将FFT 变换好的数据,按照实部()R X k 和虚部()I X k 求它们的平方和,然后对平方和进行开平方运算。

dsp基于matlab的fft算法实现

dsp基于matlab的fft算法实现

dsp基于matlab的fft算法实现————————————————————————————————作者:————————————————————————————————日期:目录1 摘要 (1)2 设计目的和内容 (2)3 基2 DIT—FFT算法 (3)3.1 DIT—FFT算法的基本原理....................................错误!未定义书签。

3。

2 DIT—FFT算法的运算规律及编程思想.............错误!未定义书签。

3.3 原位计算 ..................................................................错误!未定义书签。

3.4 倒序计算 ..................................................................错误!未定义书签。

3.5 蝶形运算 (9)4 MATLAB运行界面图 (12)4。

1 fs=1000;n=2000时的原始的语音信号时域图 (12)4。

1 fs=1000;n=2000时的原始的语音信号频域图 (12)4。

3 原始语音信号FFT频谱图与原始语音信号自编FFT频谱图比较错误!未定义书签。

4。

4 原始语音信号FFT频谱图与原始语音信号自编FFT频谱图比较155 设计总结 (16)参考文献 (19)附录 (20)1 引言傅里叶变换在信号处理中具有十分重要的作用,但是基于离散时间的傅里叶变换具有很大的时间复杂度,根据傅里叶变换理论,对一个有限长度且长度为的离散信号,做傅里叶变换的时间复杂度为,当很大时,其实现的时间是相当惊人的(比如当为时,其完成时间为(为计算机的时钟周期)),故其实现难度是相当大的,同时也严重制约了DFT 在信号分析中的应用,故需要提出一种快速的且有效的算法来实现。

正是鉴于DFT 极其复杂的时间复杂度,1965 年和巧妙地利用因子的周期性和对称性,提出了一个DFT 的快速算法,即快速傅里叶变换(FFT),从而使得DFT 在信号处理中才得到真正的广泛应用。

一种实序列FFT算法改进及其在DSP上的实现

一种实序列FFT算法改进及其在DSP上的实现

摘要 :F 是数字信号处理最重要的算法之一 ,论文分析 了常规 的 2 FT N点按时间抽选的实序列 FT 算 F运
的基本原理 , 介绍 了一种 改进的算法, 算法将奇数序列和偶数序 列部分开计算 , 并提取旋转 因子的公 因
子, 大大减少 了计算过程 中的加法和乘法的个数和旋转 因子的引用次数 , 并在 实际的 DP 台上进行 了 S平
完 成 所有 运算 需 要 N2o2 乘 法 和 No2 加 /1 N次 g lg N次
生 为按照时间抽 系统分析、 雷达 、 声纳 、 光学 、 医学影像 、 天文、 地震信 费 ,并严重影响计算 的实时 I,图 1 取, 输入 自然顺序 , 输出为倒序的 FY示意流图。为 f r
引言
快速傅里 叶变换 ( a or r nf m F T) FsFui ra r , F t e r 0
作为一种计算离散傅里叶变换 (ire o e DctF rr se u i
Tas r , F ) r f m D F 的快 速算法 , 明显 降低运算 量和 no 能 提高 D T的运算速度 , F 是数字信号处理的最重要的
曩同圜 r 1 期、 0 肇 气 ,
Hale Waihona Puke h¨ n ., ^……
^; …
, … 1
工 具 之一 。 丌 算法 的实 现和 完善 , 明显简化 数字 F 可
单元 , 费计 算 机 内存 ; 是虚 部 为零 , 计 算 机仍 浪 二 但 要做 涉及 虚 部 的计 算 , 费计 算 时间 。在 F r实 数 浪 F’ I 列 点 数 非 常大 时 ,会 造 成 D P片 内 资源 的极 大 浪 S
Ab ta t a t o r rT a s r ( F 1 i o eo s i otn ii lsg a p o e sn loi ms T en r l sr c:F s F u i rn f m F r) s n fmo t mp ra tdgt in l rc sigag rt . h oma e o I a h

基于DSP的FFT实现设计报告

基于DSP的FFT实现设计报告

DSP课程设计姓名:学号:日期:一、实验目的1.加深对DFT算法原理和基本性质的理解;2.熟悉FFT的算法原理和FFT子程序的算法流程和应用;3.学习用FFT对连续信号和时域信号进行频谱分析的方法;4.学习DSP中FFT的设计和编程思想;5.学习使用CCS的波形观察器观察波形和频谱情况;二、实验内容用DSP汇编语言及C语言进行编程,实现FFT运算、对输入信号进行频谱分析。

三、实验原理快速傅里叶变换FFT旋转因子W N有如下的特性。

对称性:W N k+N/2=-W N k(2)周期性:W N n(N-k)=W N k(N-n)=W N-nk (3)利用这些特性,既可以使DFT中有些项合并,减少了乘法积项,又可以将长序列的DFT分解成几个短序列的DFT。

FFT就是利用了旋转因子的对称性和周期性来减少运算量的。

FFT的算法是将长序列的DFT分解成短序列的DFT。

例如:N为偶数时,先将N点的DFT分解为两个N/2点的DFT,使复数乘法减少一半:再将每个N/2点的DFT分解成N/4点的DFT,使复数乘又减少一半,继续进行分解可以大大减少计算量。

最小变换的点数称为基数,对于基数为2的FFT算法,它的最小变换是2点DFT。

一般而言,FFT算法分为按时间抽取的FFT(DIT FFT)和按频率抽取的FFT(DIF FFT)两大类。

DIF FFT算法是在时域内将每一级输入序列依次按奇/偶分成2个短序列进行计算。

而DIF FFT算法是在频域内将每一级输入序列依次奇/偶分成2个短序列进行计算。

两者的区别是旋转因子出现的位置不同,得算法是一样的。

在DIF FFT 算法中,旋转因子W N 出现在输入端,而在DIF FFT 算法中它出现在输入端。

假定序列x(n)的点数N 是2的幂,按照DIF FFT 算法可将其分为偶序列和奇序列。

偶序列:x(2r)=x 1(r) 奇序列:x(2r+1)=x 2(r)其中:r=0,1,2,…,N/2-1,则x(n)的DFT 表示为式中,X 1 (k)和X 2(k)分别为X 1(r)和X 2(r)的N/2的DFT 。

基于DSP的FFT实现设计报告

基于DSP的FFT实现设计报告

DSP课程设计姓名:学号:日期:一、实验目的1.加深对DFT算法原理和基本性质的理解;2.熟悉FFT的算法原理和FFT子程序的算法流程和应用;3.学习用FFT对连续信号和时域信号进行频谱分析的方法;4.学习DSP中FFT的设计和编程思想;5.学习使用CCS的波形观察器观察波形和频谱情况;二、实验内容用DSP汇编语言及C语言进行编程,实现FFT运算、对输入信号进行频谱分析。

三、实验原理快速傅里叶变换FFT旋转因子W N有如下的特性。

对称性:W N k+N/2=-W N k(2)周期性:W N n(N-k)=W N k(N-n)=W N-nk (3)利用这些特性,既可以使DFT中有些项合并,减少了乘法积项,又可以将长序列的DFT分解成几个短序列的DFT。

FFT就是利用了旋转因子的对称性和周期性来减少运算量的。

FFT的算法是将长序列的DFT分解成短序列的DFT。

例如:N为偶数时,先将N点的DFT分解为两个N/2点的DFT,使复数乘法减少一半:再将每个N/2点的DFT分解成N/4点的DFT,使复数乘又减少一半,继续进行分解可以大大减少计算量。

最小变换的点数称为基数,对于基数为2的FFT算法,它的最小变换是2点DFT。

一般而言,FFT算法分为按时间抽取的FFT(DIT FFT)和按频率抽取的FFT(DIF FFT)两大类。

DIF FFT算法是在时域内将每一级输入序列依次按奇/偶分成2个短序列进行计算。

而DIF FFT算法是在频域内将每一级输入序列依次奇/偶分成2个短序列进行计算。

两者的区别是旋转因子出现的位置不同,得算法是一样的。

在DIF FFT 算法中,旋转因子W N 出现在输入端,而在DIF FFT 算法中它出现在输入端。

假定序列x(n)的点数N 是2的幂,按照DIF FFT 算法可将其分为偶序列和奇序列。

偶序列:x(2r)=x 1(r) 奇序列:x(2r+1)=x 2(r)其中:r=0,1,2,…,N/2-1,则x(n)的DFT 表示为式中,X 1 (k)和X 2(k)分别为X 1(r)和X 2(r)的N/2的DFT 。

DSP集成开发环境中的混合编程及FFT算法的实现(精)

DSP集成开发环境中的混合编程及FFT算法的实现(精)

DSP集成开发环境中的混合编程及FFT算法的实现摘要:实现了一种全集成可变带宽中频宽带低通滤波器,讨论分析了跨导放大器-电容(OTA—C)连续时间型滤波器的结构、设计和具体实现,使用外部可编程电路对所设计滤波器带宽进行控制,并利用ADS软件进行电路设计和仿真验证。

仿真结果表明,该滤波器带宽的可调范围为1~26 MHz,阻带抑制率大于35 dB,带内波纹小于0.5 dB,采用1.8 V电源,TSMC 0.18μm CMOS工艺库仿真,功耗小于21 mW,频响曲线接近理想状态。

关键词:Butte1 引言CCS(Code Composer Studio)是TI公司的DSP集成开发环境。

它提供了环境配置、源文件编辑、程序调试、跟踪和分析等工具,帮助用户在一个软件环境下完成编辑、编译链接、调试和数据分析等工作。

与TI提供的早期软件开发工具相比,利用CCS能够加快软件开发进程,提高工作效率。

CCS一般工作在两种模式下:软件仿真器和与硬件开发板相结合的在线编程。

前者可以脱离DSP芯片,在PC机上模拟DSP指令集与工作机制,主要用于前期算法实现和调试。

后者实时运行在DSP芯片上,可以在线编制和调试应用程序。

2 C语言和汇编语言的混合编程TMS320 C5000系列的软件设计通常有三种方法:(1) 用C语言开发;(2) 用汇编语言开发;(3) C和汇编的混合开发。

其中用C语言开发具有兼容性和可移植的优点,有利于缩短开发周期和减少开发难度,但是在运算量较大的情况下,C代码的效率还是无法和手工编写的汇编代码的效率相比,比如FFT运算,用汇编语言开发的效率高,程序执行速度快,而且可以合理利用芯片的硬件资源,但是开发难度较大,开发周期长,而且可读性和可移植性差。

C和汇编的混合编程则可以充分利用前两者的优点,以达到最佳利用DSP资源的目的。

但是,采用C和汇编语言混合编程必须遵循相关函数调用规则和寄存器调用规则,否则会给程序的开发带来意想不到的问题。

dsp的fft的设计与实现

实验五 FFT程序设计一实验目的1 了解FFT的TMS320C54x实现的编程方法.2 掌握8-1024复数点FFT的TMS320C54x程序的使用方法.3 用FFT的TMS320C54x程序分析方波和正弦波的功率谱.二实验条件1 8-1024复数点TMS320C54x源程序fft.asm.2 8-1024复数点TMS320C54x链接命令文件fft.cmd.3正弦、余弦系数表coeff.inc.4产生正弦波信号数据文件的高级语言程序,程序名为sin_fft.exe ,5向量文件vectors.asm.三实验内容1 大致阅读fft.asm、ft.cmd、coeff.inc等文件.2 对防波输入信号进行64数点FFT.(1) T修改8—1024复数点FFT源程序fft.asm,使之执行64点FFT:●将K_FFT_SIZE 设定为64●将K_LOGN 设定为6(2)对fft.asm和vectors.asm进行过汇编.(3)链接fft.obj和vectors.obj.(4)用sin_fft.exe建立64复数点对称方波输入数据文件in.dat.3对方波输入信号进行64点FFT.f或N,重复第4步实验.(如果改变N,则需要修改fft.asm) 4改变正弦波频率f或采样频率s四实验步骤1.双击,启动CCS的仿真平台的配着选项。

选择C5410 DeviceSimulator。

2.点击project菜单栏的new选项,新建一个fft64的工程注意存储的路径。

2.把下图中用到的文件拷到工程文件目录的文件路径下。

3.在ccs平台中将用到的程序导入到平台中,点击project—>add file to project。

选择多个文件时,可以按住ctrl键。

4.将所有的程序段中的start改为_main,将fft.Asm中的K_FFT_SIZE .set 32 ;NK_LOGN .set 5 ;LOG(N)改为K_FFT_SIZE .set 64 ;NK_LOGN .set 6 ;LOG(N)5,对源文件进行编译(注意先对每个.asm文件先进行编译,以防止程序有错误),没有错误时进行链接。

FFT浮点的DSP实现(精)

1 前言DSP结构可以分为定点和浮点型两种。

其中,定点型DSP可以实现整数、小数和特定的指数运算,它具有运算速度快、占用资源少、成本低等特点;灵活地使用定点型DSP进行浮点运算能够提高运算的效率。

目前对定点DSP结构支持下的浮点需求也在不断增长,主要原因是:实现算法的代码往往是采用C/C++编写,如果其中有标准型的浮点数据处理,又必须采用定点DSP器件,那么就需要将浮点算法转换成定点格式进行运算。

同时,定点DSP结构下的浮点运算有很强的可行性,因为C语言和汇编语言分别具有可移植性强和运算效率高的特点,因此在定点DSP中结合C语言和汇编语言的混合编程技术将大大提高编程的灵活度,以及运算速度。

大多数DSP的开发工具只是在C语言的基础上支持标准的浮点运算,而定点DSP硬件一般都是面向定点的运算,不支持标准的浮点运算,缺乏硬件的支持极大地限制了浮点的应用,因而标准的浮点运算在实际定点DSP应用中并不多见。

C5509是一款16位定点DSP。

在本文中,对C5509输入FTSK信号,用C语言和汇编语言混合编程的方式对输入浮点型的FTSK信号进行相关运算,并输出浮点运算结果。

这里叶变换(FFT是一种高效实现离散傅里叶变换(DFT的快速算法,是数字信号处理中最为重要的工具之一,它在声学,语音,电信和信号处理等领域有着广泛的应用。

2 方案设计2.1 方案的提出DSP (数字信号处理器与一般的微处理器相比有很大的区别,它所特有的系统结构、指令集合、数据流程方式为解决复杂的数字信号处理问题提供了便利,本文选用TMS320C54X 作为DSP 处理芯片,通过对其编程来实现FFT 的浮点DSP实现。

DSP 应用系统设计的一般流程如下图所示:图2.1 DSP 系统流程图 2.2方案的论证旋转因子W N 有如下的特性。

对称性:/2k k N N N W W +=-周期性:kk NN NW W +=利用这些特性,既可以使DFT 中有些项合并,减少了乘法积项,又可以将长序列的DFT 分解成几个短序列的DFT 。

基于DSP的数据采集及FFT实现

基于DSP的数据采集及FFT实现基于数字信号处理器(DSP)的数据采集和快速傅里叶变换(FFT)实现在信号处理和频谱分析等领域具有广泛的应用。

通过使用DSP进行数据采集和FFT实现,可以实现高速、高精度和实时的信号处理。

首先,数据采集是将模拟信号转换为数字信号的过程。

数据采集通常涉及到模拟到数字转换器(ADC),它将模拟信号进行采样并进行量化,生成离散的数字信号。

DSP通常具有内置的ADC,可以直接从模拟信号源获取数据进行采集。

采集到的数据可以存储在DSP的内存中进行后续处理。

数据采集的关键是采样频率和采样精度。

采样频率是指在单位时间内采集的样本数,它决定了采集到的频谱范围。

采样频率需要满足奈奎斯特采样定理,即至少为信号最高频率的2倍。

采样精度是指每个采样点的位数,它决定了采集到的数据的精确程度。

常见的采样精度有8位、16位、24位等。

在数据采集之后,可以使用FFT算法对采集到的数据进行频谱分析。

FFT是一种用于将时间域信号转换为频域信号的算法,它能够将连续时间的信号转换为离散频率的信号。

FFT算法的核心是将复杂度为O(N^2)的离散傅里叶变换(DFT)算法通过分治法转化为复杂度为O(NlogN)的算法,使得实时处理大规模数据成为可能。

在使用DSP进行FFT实现时,可以使用DSP芯片内置的FFT模块,也可以通过软件算法实现FFT。

内置的FFT模块通常具有高速运算和低功耗的优势,可以在较短的时间内完成大规模数据的FFT计算。

软件算法实现FFT较为灵活,可以根据实际需求进行调整和优化。

通常,FFT实现涉及到数据的预处理、FFT计算和结果后处理。

数据的预处理通常包括去除直流分量、加窗等操作,以减小频谱泄漏和谱漂的影响。

FFT计算是将采集到的数据通过FFT算法转换为频域信号的过程。

结果后处理可以包括频谱平滑、幅度谱归一化、相位分析等。

通过合理的数据预处理和结果后处理,可以获得准确的频谱信息。

除了基本的数据采集和FFT实现,基于DSP的数据采集和FFT还可以进行其他扩展和优化。

DSP的FFT实现设计报告

DSP的FFT实现设计报告一、引言快速傅里叶变换(Fast Fourier Transform, FFT)是一种用于计算离散傅里叶变换(Discrete Fourier Transform, DFT)的快速算法。

FFT广泛应用于信号处理、图像处理、通信等领域。

本报告旨在介绍FFT的实现设计,探讨其原理、算法和优化方法。

二、FFT的原理傅里叶变换是信号处理中的重要工具,可以将一个信号在频域中进行分解。

离散傅里叶变换是对离散信号进行傅里叶变换的离散采样版本。

FFT是一种高效的离散傅里叶变换算法,通过利用输入序列的对称性和分治策略来减少计算量。

三、FFT的算法FFT的算法有多种变种,其中最为常见的是Cooley-Tukey算法。

Cooley-Tukey算法基于分治策略,将一个长度为N的DFT分解为两个长度为N/2的DFT,并通过旋转因子进行合并。

算法的关键步骤包括:分解、旋转因子计算、合并。

四、FFT的优化1.选择合适的长度和分解策略:对于长度为2^k的序列,可以直接使用蝶形操作进行计算,提高效率。

对于长度不是2的幂的序列,可以通过增加0元素的方式填充到2的幂次方长度,再进行计算。

2.使用查表法计算旋转因子:由于旋转因子具有周期性和对称性,可以将旋转因子的计算结果预先存储在一个查找表中,提高运算速度。

3.使用位翻转法重新排列输入序列:FFT的关键步骤是将输入序列重新排列成位翻转的顺序,这样可以实现更高效的计算。

位翻转法可以通过二进制位运算实现,减少乘法和除法的运算量。

4.使用并行计算:FFT的计算过程中存在大量的矩阵乘法运算,可以通过并行计算的方式提高计算效率,如使用SIMD指令来同时计算多个数据。

五、实现设计基于以上原理和优化方法,我们设计了一个基于C语言的FFT算法实现。

主要步骤包括:1.输入信号预处理:将输入信号重排列成位翻转的顺序。

如果输入序列长度不是2的幂次方,则填充0元素。

2.计算旋转因子:通过查表法计算旋转因子。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
离散(T)和非周期
非周期和离散(Ω0=2π/T0)
周期(Ωs=2π/T)和连续
离散(T)和周期(T0) 周期(Ωs=2π/T)和离散 (Ω0=2π/T0)
周期序列的离散傅里叶级数
周期序列的DFS正变换和反变换:
其中:
离散傅里叶变换(DFT)
同样:X(k)也是一个N点的有限长序列
有限长序列的DFT正变换和反变换:
解:
(1)抽样频率应为 (2)抽样时间间隔应为
频率分辨率
提高频率分辨率方法: 增加信号实际记录长度 补零并不能提高频率分辨率
14.2.2 FFT算法的导出
FFT: Fast Fourier Transform
1965年,Cooley, Tukey 《机器计算傅里叶级数的一种算法》
直接计算DFT的问题及改进途径
8点的FFT的运算流图
x(0) W0 x(4) N x(2) W0 x(6) N x(1) W0 x(5) N x(3) W0 x(7) N
X (0)
3
X1 (0) X1 (1) X1 (2) -1 X1 (3)
X(0)
X(1) X(2) X(3)
X (1) -1
N X (1) W 2 4 N -1 X (0) 5
(0)= 2 2(2)= 2(1)= 2(3)=
(0) (4) (2) (6) (1) (5) (3) (7)
N/4 DFT N/4 DFT N/4 DFT N/4 DFT
X3 (0) X3 (1) 4 (0) X 0 W N 4 X (1) 2 W N X5 (0) X5 (1) 6 (0) X 0 W N X6 (1) 2
系数 :N / 2个存储单元
4、DIT算法的其他形式流图
• • • • 输入倒位序输出自然序 输入自然序输出倒位序 输入输出均自然序 相同几何形状
– 输入倒位序输出自然序 – 输入自然序输出倒位序
IFFT运算方法 用FFT计算反FFT
• 以上所讨论的FFT的运算方法同样 可用于IDFT的运算,简称为IFFT 。即快速付里叶反变换。从IDFT 的定义出发,可以导出下列二种 利用FFT来计算FFT的方法。
3.直接利用FFT流图方法的注意点
(1)FFT与IFFT连接应用时,注意输入输 出序列的排列顺序,即应注意是自然顺 序还是倒序。 (2)FFT和IFFT共用同一个程序时,也应 注意利用FFT算法输入输出的排列顺序, 即应注意自然顺序还是例位序 (3)当把频率抽取FFT流图用于IDFT时, 应改称时间抽取IFFT流图。 (4)当把时间抽取FFT流图用于IDFT时, 应改称频率抽取IFFT流图。
N / 2个蝶形 总计
复数加法 N / 2 (N / 2 –1) N (N / 2 –1) 2
N
1
N/2
运算量减少了近一半
N / 2仍为偶数,进一步分解:N / 2 N / 4
同理:
其中:
3(0)= 1(0)=
3(1)= 1(2)=
4(0)= 1(1)= 4(1)= 1(3)=
(0)= 5 5(1)= 6(0)= 6(1)=
运算量
一个X(k) N个X(k) (N点DFT)
复数乘法 复数加法 N N–1
N2 N (N – 1)
实数乘法
一次复乘 4 4N
实数加法
2
一次复加 一个X (k) N个X (k) (N点DFT)
4N 2
2 2N+2 (N – 1)=2 (2N – 1) 2N (2N – 1)
FFT算法分类: • 时间抽选法 DIT: Decimation-In-Time • 频率抽选法 DIF: Decimation-In-Frequency
x(n) 补N-N1个零 N点DFT
N点IDFT h(n) y(n) = x(n)*h(n)
补N-N2个零
N点DFT
用DFT对模拟信号作频谱分析
信号的频谱分析:计算信号的傅里叶变换
频率响应的混叠失真及参数的选择
信号最高频率与频率分辨率之间的矛盾
同时提高信号最高频率和频率分辨率,需增加采 样点数N。
一、利用FFT计算IFFT的思路
• 将下列两式进行比较
1 N 1 nk x ( n ) IDFT [ X ( k )] X ( k ) W N N k 0 N 1 nk X (k ) DFT [ x(n)] x(n)W N k 0 nk nk (1)只要把DFT运算中的每个系数W N 改成W N (2)将运算结果都除以N (3)那么以上讨论的时间抽取 或频率抽取FFT算法都可以拿来运算IDFT
3
14.2 FFT的基本原理
14.2.1 DFT的基本原理 14.2.2 FFT算法的导出 时间抽取FFT(DIT) 用FFT计算反FFT
4
14.2.1 DFT的基本原理
离散傅里叶变换: DFT: Discrete Fourier Transform
5
Fourier变换的几种可能形式
时间函数 频率函数
X1(0)
N/2点 DFT
X1(1)
X1(2)
X1(3)
X2(0)
X(0) X(1) X(2) X(3)
X(4) -1 X(5) -1 X(6) -1 X(7)
-1
N/2点 DFT
0 W X2(1) N W1 X2(2) N W2 X2(3) N W3 N
分解后的运算量:
复数乘法 一个N / 2点DFT (N / 2)2 两个N / 2点DFT N 2 / 2 一个蝶形
《数字信号处理与DSP器件》讲义 Digital Signal Processing (DSP) and DSP device
第十四章 FFT算法的DSP实现
丁喜冬 中山大学物理科学与工程技术学院
1
第14章 FFT算法的DSP实现
本章内容
14.1 14.2 14.3 14.4
引言
FFT的基本原理
FFT算法的c语言实现
1
0 1
3)蝶形运算 对N = 2L点FFT,输入倒位序,输出自然序, 第m级运算每个蝶形的两节点距离为 2m–1 第m级运算:
蝶形运算两节点的第一个节点为k值,表 示成L位二进制数,左移L – m位,把右 边空出的位置补零,结果为r的二进制数 。
4)存储单元
输入序列x(n) : N个存储单元
IFFT的基本蝶形运算
A
1 n WN 2 1 2 1 A W N n B 2 1 A W N n B 2


A
1 2 1 n WN 2 1
1 A B 2
B
B
2
A B W Nn
(a)频率抽取IFFT的蝶形运 算
(b)时间抽取IFFT的蝶形运算
二.直接利用FFT流图的方法 1.思路
2、序列的圆周移位
定义:
有限长序列的圆周移位导致频谱线性相移, 而对频谱幅度无影响。
3、共轭对称性
序列的Fourier变换的对称性质中提到:
任意序列可表示成

之和:
其中:
4、有限长序列的线性卷积与圆周卷积
N点圆周卷积:
N
N
线性卷积:
N
小结:线性卷积求解方法
• 时域直接求解
• z变换法
• DFT法
离散时间、连续频率—序列的傅里叶变换
时域的离散化造成频域的周期延拓, 而时域的非周期对应于频域的连续
离散时间、离散频率—离散傅里叶变换
一个域的离散造成另一个域的周期延拓 ,因此离散傅里叶变换的时域和频域都 是离散的和周期的
四种傅里叶变换形式的归纳
时间函数 连续和非周期 频率函数 非周期和连续
连续和周期(T0)
其中:
x(n)的N点DFT是 x(n)的z变换在单位圆上的N点等间隔抽样;
x(n)的DTFT在区间[0,2π]上的N点等间隔 抽样。
离散傅里叶变换的性质
DFT正变换和反变换:
1、线性:


这里,序列长度及DFT点数均为N 若不等,分别为N1,N2,则需补零使两序列长度 相等,均为N,且 N max[ N1 , N 2 ]
时间抽取FFT(DIT)
按时间抽选的基-2FFT算法
1、算法原理
设序列点数 N = 2L,L 为整数。 若不满足,则补零 N为2的整数幂的FFT算法称基-2FFT算法。 将序列x(n)按n的奇偶分成两组:
则x(n)的DFT:
再利用周期性求X(k)的后半部分
x1(0)=x(0) x1(1)=x(2) x1(2)=x(4) x1(3)=x(6) x2(0)=x(1) x2(1)=x(3) x2(2)=x(5) x2(3)=x(7)
FFT的定点DSP实现 FFT的浮点DSP实现 小结
2
14.5
14.6
14.1
引言
傅里叶变换: 将信号从时域变换到频域的变换形式, 有离散傅里叶变换和连续傅里叶变换。 快速傅里叶变换: (FFT:Fast Fourier Transform) 用DSP实现快速傅里叶变换: 更为方便快速:单周期乘加指令;比特 反转指令等。
连续时间、连续频率—傅里叶变换 连续时间、离散频率—傅里叶级数
离散时间、连续频率—序列的傅里叶变换
离散时间、离散频率—离散傅里叶变换
连续时间、连续频率—傅里叶变换
时域连续函数造成频域是非周期的谱, 而时域的非周期造成频域是连续的谱密度函数。
连续时间、离散频率—傅里叶级数
时域连续函数造成频域是非周期的谱, 而频域的离散对应时域是周期函数。
复数加法:
比较DFT
3、算法特点
1)原位计算
m表示第m级迭代,k,j表示数据所在的行数
相关文档
最新文档