快速傅里叶变换概要.docVIP

  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文档。上传文档
查看更多
迅速傅里叶变换纲要 迅速傅里叶变换纲要 迅速傅里叶变换纲要 实验二 迅速傅立叶变换 一、 实验目的 1. 学习和掌握迅速傅立叶变换( FFT)的实现过程和编程技术 2. 运用 FFT 剖析正弦信号的频谱 3. 测试 FFT 的运算时间,比较 FFT 与 DFT的运算速度,获取对 FFT“迅速”的感性认识。 4. 锻炼和提升数字信号办理的程序设计和调试能力。 二、实验原理与方法 FFT 其实不是与 DFT 不一样的另一种变换,而是为了减少 DFT 运算次数的一种迅速算法。它是对 DFT 变换式进行一次次分解,使其成为若干小点数的组合,进而减少运算量。常用的 FFT是以 2为 基数的,其长度=2M。它的效率高,程序简单,使用特别方便,当要变换的序列长度不等于 2 N 的整数次方时, 为了使用以 2 为基数的 FFT,能够用末端补零的方法, 使其长度延伸至 2 的整数 次方。 本实验运用时间抽取基 2 FFT,其原理、信号流图和运算过程可参阅讲堂笔录、教材和其余教科 书。 FFT 的实现要比 DFT复杂,往常采纳三个嵌套循环来实现。最外面的循环是分级循环, N=2M 点的 FFT 分为 M级计算。中间一层是分组循环,一级内蝶形系数 k W 相同的蝶形构成一组。最内 层为蝶形计算的循环,一组内不一样输入数据的蝶形逐一计算。编程时要注意各级蝶形组之间的 k 间隔、组内蝶形之间间隔、以及系数 W 变化。有许多书中有 FFT 程序可供参照,但要注意理解 和弄懂,不行一味照搬,要尽量自己去编。 三、实验内容 1.设计说明 编制时间抽取基 2 FFT 程序计算前面 DFT程序剖析过的正弦信号,与 DFT 计算的结果进行比较,以考证所编程序的正确性。 FFT 为复数运算,若用实数运算来实现, 需要设置两个数组来寄存输入输出数据。 此中一个用于 寄存数据的实部,另一个寄存数据的虚部。正弦输入信号为实数,则令其虚部为零。相同,碟 形运算也要化成实数来进行,分别算出实部和虚部。自然也能够直接用复数数组和语句实现。 程序设计的难点和要点在于要合理安排和正确设置碟形运算的分级循环、级内分组循环和组内 k 分碟形循环。要注意乘法系数 WN 的变化以及各循环变量的变化和调整。 程序中,在进行 FFT 计算以前,先要将输入数据摆列成二进制倒序的形式,这可经过将相关数 据相交换位来实现。 正弦抽样信号的产生和输出频谱图的绘制与前面的 DFT程序相同。 2.实验步骤 ( 1) 将编制的程序输入计算机,调试、运转正确。即输入实验一中的 1~ 2 组数 据,看 FFT 输出谱线的结果能否与前面 DFT 的结果一致。 ( 2) 在不一样的 FFT 长度下(可分别令 N=64, 128, 256, 512 , 1024 ),运转 FFT 程序,察看、比较和记录运转时间。 因为此刻计算机的运算速度很快, 计算一次 FFT 的时间很短 (在 ms数目级) ,不便察看和记录。 可在程序中添置循环语句,让其重复计算 FFT 很多次(可重复 100 次、 1000 次或更多,视状况 而定),使总的运算时间达到数秒或数十秒钟,进而能够经过人工来察看和记录。 此时注意,为了防备 FFT 多次循环计算,使输入输出数据愈来愈大而发生溢出,可令输入数据 所有为零。这样, FFT 的运算量保持不变,但输入输出一直为零,不会因多次循环而发生溢出。 在观察 FFT 的运算时间时,作图部分的语句不要运转(一方面,它不该当计入 FFT 或 DFT的运 算时间。另一方面,当 N较大时,原有程序中的作图语句会犯错),可将其说明掉。 丈量 FFT 运转时间的一个更好、 更精准的方法是在程序中调用读取计算机时钟的函 数。 TURBO C中供给多种读取计算机时间的方法和函数,一种比较简单的方法是用 biostime() 函数,后边给出了相应的参照程序。 ( 3) 用上述近似的方法,在不一样的长度下( N=64, 128, 256 , 512 , 1024),运 行实验一中的 DFT程序,记录运转时间,比较它与 FFT 的速度差距。 四、 C语言参照程序 ( 1) 用 FFT 剖析正弦信号频谱的程序 #includemath.h void fft(x,y,n)  /* FFT  作为子程序  */ int n; float x[1024],y[1024]; { int i,j,k,l,m,n1,n2; float c,s,e,tr,ti; /*  计算  FFT 的级数  M */ for(j=1,i=1;in;i++) { m=i; j=2*j; if(j==n) break; } /* 改变输入数据的次序 */ n1=n-1; for(j=0,i=0;in1;i++) { if(i

文档评论(0)

158****3214 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档