基于DSP的C程序实验报告快速傅立叶变换(FFT)算法.docxVIP

基于DSP的C程序实验报告快速傅立叶变换(FFT)算法.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
目录 一.引言 二.实验原理 三.FFT基本结构 (1)信号流图 (2)软件程序流图 四.实验程序 五.调试过程与步骤 六.实验结果 七.结果分析 八.遇到的问题及解决办法 九.实验体会 Word 资料 实验题目 :快速傅立叶变换 (FFT)算法 一.引言 众所周知, FFT 是离散傅立叶变换( DFT)的一种快速算法。由于 计算 DFT 时一次复数乘法需用四次实数乘法和二次实数加法; 一次复 数加法则需二次实数加法。每运算一个 X(k)需要 4N 次复数乘法及 2N+2(N-1 )=2(2N-1 )次实数加法。所以整个 DFT运算总共需要 4N^2 次实数乘法和 N*2(2N-1)=2N(2N-1) 次实数加法。如此一来,计算时 乘法次数和加法次数都是和 N^2 成正比的,当 N 很大时,运算量是 可观的,因而需要改进对 DFT 的算法提高运算速度。 我们观察 DFT的系数特性,可发现其对称性和周期性, 我们可以将 DFT 运算中有些项合并。因此, FFT就孕育而生了。 Word 资料 二. 原理 1.FFT 的原理和参数生成公式: 我 先 序列 度 N=2^L ,L 整数。将 N=2^L 的序列 x(n)( n=0,1, ??,N-1) ,按 N 的奇偶分成两 ,也就是 我 将一个 N 点的 DFT 分解成两个 N/2 点的 DFT,他 又重新 合成一个如下式所表达的 N 点DFT: 我 称 的 RFFT 化算法是包装算法: 首先 2N 点 数的 入称 “ 包”。 其次 N 点的 FFT 被 运行。最后作 果 生 的N 点的合成 出是“打开”成 最初的与 DFT 相符合的 2N 点 入。 Word 资料 三. FFT 的基本结构: 1.FFT信号流图如下: x (0 ) N/4点 X 3 (0 ) X 1 (0 ) X(0) X (1 ) X 1 (1 ) x (4 ) DFT 3 X(1) x (2 ) N/4点 X 4 (0 ) 0 X 1 (2 ) X(2) W N 2 x (6 ) DFT X 4 (1 ) 1 X 1 (3 ) X(3) W N 2 x (1 ) N/4点 X 2 (0 ) W N0 X(4) X 2 (1 ) x (5 ) DFT 1 X(5) W N X 2 (2 ) 2 x (3 ) N/4点 W0N2 W N X(6) x (7 ) DFT X 2 (3 ) 3 X(7) W 1 2 W N N 整个过程共有 log2N 次,每次分组间隔为 2^ (L-1) ----------------1=L=log2N 1)如上图第一次蝶形运算间隔为一,如第一个和第二个,第三个和第四个,以此类推; 第二次间隔为二,如第一个和第三个,第二个和第四个等 2)基本运算单元以下面的蝶形运算为主: 计算公式如下: X m 1 ( p) X m WNr X m (q) X m 1 ( p) X m WNr X m (q) 3)在 FFT运算中,旋转因子 WmN=cos(2 πm/N)-jsin(2 πm/N) ,求 正弦和余弦函数值的计算量是很大的。 2 R r j e N cos(2 R / N ) j sin(2 R / N ) WN (4)本程序采用的输入信号为: 1024*sin(2*pi*3*t) ,采样频率为 1024 Word 资料 2.程序流程图: Word 资料 四.实验程序 #include DSP281x_Device.h // DSP281x Headerfile Includ e File #include DSP281x_Examples.h // DSP281x Examples Includ e File #include f2812a.h #includemath.h #define PI 3.1415926 #define SAMPLENUMBER 128 void InitForFFT(); void MakeWave(); oid FFT(float dataR[SAMPLENUMBER],float dataI[SAMPLEN UMBER]); int INPUT[SAMPLENUMBER],DATA[SAMPLENUMBER]; float fWaveR[SAMPLENUMBER],fWaveI[SAMPLENUMBER],w[SA MPLENUMBER]; float sin_tab[SAMPLENUMBER],cos_tab[SAMPLENUMBER]; Word 资料 void FFT(float dataR[SAMPLENUMBER],float dataI[SAMPLENU MBER]) { int x0,x1,x2,x3

文档评论(0)

150****5607 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档