DSP-快速傅立叶变换算法实验_第1页
DSP-快速傅立叶变换算法实验_第2页
DSP-快速傅立叶变换算法实验_第3页
DSP-快速傅立叶变换算法实验_第4页
DSP-快速傅立叶变换算法实验_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、中 南 大 学dsp技术实验报告实验名称:快速傅立叶变换(fft) 算法实验专业班级:信息0602学生姓名:张倩曦 (学号: 24)指导老师:陈宁完成日期: 2009 年12月2日中南大学信息科学与工程学院快速傅立叶变换 (fft) 算法实验一实验目的1掌握用窗函数法设计 fft 快速傅里叶的原理和方法;2熟悉 fft 快速傅里叶特性;3了解各种窗函数对快速傅里叶特性的影响。二实验设备pc 兼容机一台,操作系统为 windows2000(或windows98,windowsxp,以下默认为windows2000),安装 code composer studio 2.0 软件。三实验原理1fft

2、 的原理和参数生成公式:公式( 1)fft 运算公式fft 并不是一种新的变换,它是离散傅立叶变换(dft)的一种快速算法。由于我们在计算 dft 时一次复数乘法需用四次实数乘法和二次实数加法;一次复数加法则需二次实数加法。每运算一个 x(k)需要4n 次复数乘法及 2n+2(n-1)=2(2n-1)次实数加法。所以整个 dft运算总共需要 4n2 次实数乘法和 n*2(2n-1)=2n(2n-1) 次实数加法。如此一来,计算时乘法次数和加法次数都是和n2 成正比的,当 n 很大时,运算量是可观的,因而需要改进对dft 的算法减少运算速度。根据傅立叶变换的对称性和周期性,我们可以将dft 运算

3、中有些项合并。我们先设序列长度为 n=2l,l 为整数。将n=2l 的序列 x(n)(n=0,1, , n-1),按n的奇偶分成两组,也就是说我们将一个n 点的dft 分解成两个 n/2 点的dft,他们又重新组合成一个如下式所表达的n 点dft:一般来说,输入被假定为连续的。 当输入为纯粹的实数的时候,我们就可以利用左右对称的特性更好的计算dft。我们称这样的 rfft 优化算法是包装算法:首先2n 点实数的连续输入称为“ 进包” 。其次 n 点的fft 被连续运行。最后作为结果产生的n 点的合成输出是“ 打开” 成为最初的与 dft 相符合的 2n 点输入。使用这一思想,我们可以划分fft

4、 的大小,它有一半花费在包装输入 o (n) 的操作和打开输出上。 这样的 rfft 算法和一般的 fft 算法同样迅速,计算速度几乎都达到了两次dft的连续输入。下列一部分将描述更多的在tms320c55x 上算法和运行的细节。5程序流程图:四实验步骤(一)第一部分1实验准备:-设置软件仿真模式。-启动ccs。2打开工程。浏览程序,工程目录为 c:icetek-vc5509-edulablab0503-fftfft.pjt 。3编译并下载程序。4打开观察窗口选择菜单 view-graph-time/frequency5清除显示在以上打开的窗口中单击鼠标右键,选择弹出式菜单中“clear di

5、splay”功能。6设置断点在程序 fft.c 中有注释“ break point”的语句上设置软件断点。7运行并观察结果。选择“ debug”菜单的“ animate”项,或按 f12 键运行程序。观察“ test wave ”窗口中时域图形;在“test wave”窗口中点击右键,选择属性,更改图形显示为fft。观察频域图形。观察“ fft”窗口中的由 ccs 计算出的正弦波的 fft。8退出 ccs。9. 实验结果10.源代码( c语言)#include myapp.h #include icetek-vc5509-edu.h #include scancode.h #include #

6、define pi 3.1415926 #define samplenumber 128 void initforfft(); void makewave(); int inputsamplenumber,datasamplenumber; float fwaversamplenumber,fwaveisamplenumber,wsamplenumber; float sin_tabsamplenumber,cos_tabsamplenumber; main() int i; initforfft(); makewave(); for ( i=0;isamplenumber;i+ ) fwav

7、eri=inputi; fwaveii=0.0f; wi=0.0f; fft(fwaver,fwavei); for ( i=0;isamplenumber;i+ ) datai=wi; while ( 1 ); / break point void fft(float datarsamplenumber,float dataisamplenumber) int x0,x1,x2,x3,x4,x5,x6,xx; int i,j,k,b,p,l; float tr,ti,temp; for ( i=0;isamplenumber;i+ ) x0=x1=x2=x3=x4=x5=x6=0; x0=i

8、&0 x01; x1=(i/2)&0 x01; x2=(i/4)&0 x01; x3=(i/8)&0 x01;x4=(i/16)&0 x01; x5=(i/32)&0 x01; x6=(i/64)&0 x01; xx=x0*64+x1*32+x2*16+x3*8+x4*4+x5*2+x6; dataixx=datari; for ( i=0;isamplenumber;i+ ) datari=dataii; dataii=0; for ( l=1;l0 ) b=b*2; i-; /* b= 2(l-1) */ for ( j=0;j0 )

9、 /* p=pow(2,7-l)*j; */ p=p*2; i-; p=p*j; for ( k=j;k128;k=k+2*b ) /* for (3) */ tr=datark; ti=dataik; temp=datark+b; datark=datark+datark+b*cos_tabp+dataik+b*sin_tabp; dataik=dataik-datark+b*sin_tabp+dataik+b*cos_tabp; datark+b=tr-datark+b*cos_tabp-dataik+b*sin_tabp; dataik+b=ti+temp*sin_tabp-dataik

10、+b*cos_tabp; /* end for (3) */ /* end for (2) */ /* end for (1) */ for ( i=0;isamplenumber/2;i+ ) wi=sqrt(datari*datari+dataii*dataii); /* end fft */ void initforfft() int i; for ( i=0;isamplenumber;i+ ) sin_tabi=sin(pi*2*i/samplenumber); cos_tabi=cos(pi*2*i/samplenumber); void makewave() int i; for

11、 ( i=0;isamplenumber;i+ ) inputi=sin(pi*2*i/samplenumber*3)*1024; (二)第二部分1.程序参数说明extern void initc5402(void) extern void openmcbsp(void) extern void closemcbsp(void) extern void readad50(void) extern void writead50(void) void kfft(pr,pi,n,k,fr,fi,l,il) :基 2 快速傅立叶变换子程序, n 为变换点数, 应满足 2 的整数次幂,k 为幂次(正整数

12、) ;数组 x :输入信号数组,数据存放于地址为3000h307fh 存储 器中,转为浮点型后,生成 x 数组,长度 128;数组 mo:fft 变换输出数组,长度128,浮点型,整型后,写入存储器中。2.子程序流程图:初始化输入数组排序计算第一层中间值计算层数计算对应层步长计算计算各层中间结果计算层数 =0?计算结果输出ny3.启动 ccs 2.0,用 project/open 打开“ expfft01.pjt ”工程文件双击“ expfft01.pjt” 及“source”可查看各源程序;加载“expfft01.out” ;4.在主程序中, k+处设置断点5.单击“ run”运行程序或按

13、f5 运行程序;程序将运行至断点处停止;6.用 view / graph / time/frequency打开一个图形观察窗口;7.单击“ animate ”运行程序。 或按 f10运行,调整观察窗口并观察变换结果。五.实验总结这次 dsp技术的实验是在我们学习了数字信号处理、c语言程序设计的先修课程和 dsp技术,以及熟悉了 ccs软件之后完成的。 实验一我们首先熟悉要用的各种软硬件环境,接下来的实验二和三我们完成了有限冲击响应滤波器(fir)算法实验和快速傅里叶变换(fft )算法实验。这次实验我个人认为在以下几个方面收获最大:1.首先是实验前对自己过去几个学期已学理论知识的巩固加深、综合应用以及对实验相关资料的收集能力的提高。2.实验中各个部分的要求要理解掌握,认真对待。实验锻炼了我们认真的态度和严谨的精神。3.当遇到问题和困难的时候, 一定要保持冷静, 慢

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论