ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:822.83KB ,
资源ID:10516130      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10516130.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于DSP的快速傅里叶FFT算法.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于DSP的快速傅里叶FFT算法.docx

1、基于DSP的快速傅里叶FFT算法1. 设计目的1.1.设计目的1掌握用窗函数法设计FFT 快速傅里叶的原理和方法; 2熟悉FFT 快速傅里叶特性; 3了解各种窗函数对快速傅里叶特性的影响。1.2.使用设备PC 兼容机一台,操作系统为Windows2000(或Windows98,WindowsXP,以下默认为Windows2000),安装Code Composer Studio 2.0 软件。 2.设计任务与要求按原程序仿真完成后,修改参数,观察波形变化。3.原理与分析1FFT 的原理和参数生成公式 公式(1)FFT 运算公式 FFT 并不是一种新的变换,它是离散傅立叶变换(DFT )的一种快速

2、算法。由于我们在计算DFT 时一次复数乘法需用四次实数乘法和二次实数加法;一次复数加法则需二次实数加法。每运算一个X(k)需要4N 次复数乘法及2N+2(N-1)=2(2N-1)次实数加法。所以整个DFT 运算总共需要4N2 次实数乘法和N*2(2N-1)=2N(2N-1)次实数加法。如此一来,计算时乘法次数和加法次数都是和N2 成正比的,当N 很大时,运算量是可观的,因而需要改进对DFT 的算法减少运算速度。 根据傅立叶变换的对称性和周期性,我们可以将DFT 运算中有些项合并。 我们先设序列长度为N=2L,L 为整数。将N=2L 的序列x(n)(n=0,1,,N-1),按N的奇偶分成两组,也

3、就是说我们将一个N 点的DFT 分解成两个N/2 点的DFT,他们又重新组合成一个如下式所表达的N 点DFT: 一般来说,输入被假定为连续的。当输入为纯粹的实数的时候,我们就可以利用左右对称的特性更好的计算DFT。 我们称这样的RFFT 优化算法是包装算法:首先2N 点实数的连续输入称为“进包”。其次N 点的FFT 被连续被运行。最后作为结果产生的N 点的合成输出是“打开”成为最初的与DFT 相符合的2N 点输入。 使用这战略,我们可以划分FFT 的大小,它有一半花费在包装输入O (N )的操作和打开输出上。这样的RFFT 算法和一般的FFT 算法同样迅速,计算速度几乎都达到了两次DFT的连续

4、输入。下列一部分将描述更多的在TMS320C54x 上算法和运行的细节。2程序流程图4.实验步骤1实验准备-设置软件仿真模式。-启动CCS。2打开工程,浏览程序,工程目录为C:ICETEK-F2812-AG-EDUlabDSP281x_exampleslab0503-FFT3编译并下载程序 Project-Rebuilt all File-Load Program-fft.out4打开观察窗口:选择菜单View-Graph-Time/Frequency进行如下图所示设置。图2-25-1 观察窗口设置1图2-25-2 观察窗口设置 2图2-25-3 观察窗口设置35清除显示:在以上打开的窗口中单

5、击鼠标右键,选择弹出式菜单中“Clear Display”功能。 6设置断点:在程序FFT.c 中有注释“break point ”的语句上设置软件断点。7运行并观察结果 选择“Debug”菜单的“Animate ”项,或按F12 键运行程序。 观察“FFT”窗口中时域和频域图形。 8退出 CCS 5.软件设计#include DSP281x_Device.h / DSP281x Headerfile Include File#include DSP281x_Examples.h / DSP281x Examples Include File#include f2812a.h#includem

6、ath.h#define PI 3.1415926#define SAMPLENUMBER 128void InitForFFT();void MakeWave();/void FFT(float dataRSAMPLENUMBER,float dataISAMPLENUMBER);int INPUTSAMPLENUMBER,DATASAMPLENUMBER;float fWaveRSAMPLENUMBER,fWaveISAMPLENUMBER,wSAMPLENUMBER;float sin_tabSAMPLENUMBER,cos_tabSAMPLENUMBER;void FFT(float

7、dataRSAMPLENUMBER,float dataISAMPLENUMBER) int x0,x1,x2,x3,x4,x5,x6,xx; int i,j,k,b,p,L; float TR,TI,temp; /* following code invert sequence */ for ( i=0;iSAMPLENUMBER;i+ ) x0=x1=x2=x3=x4=x5=x6=0; x0=i&0x01; x1=(i/2)&0x01; x2=(i/4)&0x01; x3=(i/8)&0x01;x4=(i/16)&0x01; x5=(i/32)&0x01; x6=(i/64)&0x01;

8、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; /* following code FFT */ for ( L=1;L0 ) b=b*2; i-; /* b= 2(L-1) */ for ( j=0;j0 ) /* 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=da

9、taRk+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+b*cos_tabp; /* END for (3) */ /* END for (2) */ /* END for (1) */ for ( i=0;iSAMPLENUMBER/2;i+ ) wi=sqrt(dat

10、aRi*dataRi+dataIi*dataIi); /* END FFT */main() int i; InitForFFT(); MakeWave(); for ( i=0;iSAMPLENUMBER;i+ ) fWaveRi=INPUTi; fWaveIi=0.0f; wi=0.0f; FFT(fWaveR,fWaveI); for ( i=0;iSAMPLENUMBER;i+ ) DATAi=wi; while ( 1 ); / break pointvoid InitForFFT() int i; for ( i=0;iSAMPLENUMBER;i+ ) sin_tabi=sin(

11、PI*2*i/SAMPLENUMBER); cos_tabi=cos(PI*2*i/SAMPLENUMBER); void MakeWave() int i; for ( i=0;iSAMPLENUMBER;i+ ) INPUTi=sin(PI*2*i/SAMPLENUMBER*3)*1024; 6.系统仿真及调试通过观察频域和时域图,程序计算出了测试波形的功率谱,与 CCS 计算的FFT 结果相近。7.完成结果或效果1当“#define SAMPLENUMBER 128”时运行结果为:2当“#define SAMPLENUMBER 64”时将程序修改为: int x0,x1,x2,x3,x4

12、,x5,xx;x0=x1=x2=x3=x4=x5=0;x0=i&0x01; x1=(i/2)&0x01; x2=(i/4)&0x01;x3=(i/8)&0x01; x4=(i/16)&0x01; x5=(i/32)&0x01;xx=x0*32+x1*16+x2*8+x3*4+x4*2+x5;for ( k=j;k64;k=k+2*b )修改设置运行结果为:3当“#define SAMPLENUMBER 32”时将程序修改为: int x0,x1,x2,x3,x4,xx;x0=x1=x2=x3=x4=0;x0=i&0x01; x1=(i/2)&0x01; x2=(i/4)&0x01;x3=(i/

13、8)&0x01; x4=(i/16)&0x01;xx=x0*16+x1*8+x2*4+x3*2+x4;for ( k=j;k32;k=k+2*b )修改设置运行结果为:4当“#define SAMPLENUMBER 16”时将程序修改为: int x0,x1,x2,x3,xx;x0=x1=x2=x3 =0;x0=i&0x01; x1=(i/2)&0x01; x2=(i/4)&0x01;x3=(i/8)&0x01;xx=x0*8+x1*4+x2*2+x3;for ( k=j;k16;k=k+2*b )修改设置运行结果为:5当“#define SAMPLENUMBER 256”时将程序修改为: i

14、nt x0,x1,x2,x3,x4,x5,x6,x7,xx;x0=x1=x2=x3=x4=x5=x6=x7=0;x0=i&0x01; x1=(i/2)&0x01; x2=(i/4)&0x01;x3=(i/8)&0x01; x4=(i/16)&0x01; x5=(i/32)&0x01;x6=(i/64)&0x01; x7=(i/128)&0x01;xx=x0*128+x1*64+x2*32+x3*16+x4*8+x5*4+x6*2+x7;for ( k=j;k256;k=k+2*b )运行结果为:6当“#define SAMPLENUMBER 512”时将程序修改为: int x0,x1,x2,

15、x3,x4,x5,x6,x7,x8,xx;x0=x1=x2=x3=x4=x5=x6=x7=x8=0;x0=i&0x01; x1=(i/2)&0x01; x2=(i/4)&0x01;x3=(i/8)&0x01; x4=(i/16)&0x01; x5=(i/32)&0x01;x6=(i/64)&0x01; x7=(i/128)&0x01; x8=(i/256)&0x01;xx=x0*256+x1*128+x2*64+x3*32+x4*16+x5*8+x6*4+x7*2+x8;for ( k=j;k512;k=k+2*b )修改设置运行结果为:7当“#define SAMPLENUMBER 620”

16、时将程序修改为: int x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,xx;x0=x1=x2=x3=x4=x5=x6=x7=x8=x9=0;x0=i&0x01; x1=(i/2)&0x01; x2=(i/4)&0x01;x3=(i/8)&0x01; x4=(i/16)&0x01; x5=(i/32)&0x01;x6=(i/64)&0x01; x7=(i/128)&0x01; x8=(i/256)&0x01; x9=(i/512)&0x01;xx=x0*512+x1*256+x2*128+x3*64+x4*32+x5*16+x6*8+x7*4+x8*2+x9;for ( k=j;k620;k=k+2*b )修改设置运行结果:结论:经试验当SAMPLENUMBER超过650时,运算超出内存范围,不能编译。8.心得体会通过本次实验巩固了理论知识,加强了对本课程的理解,更加熟悉了DSP的操作及应用。9.参考文献(1)高海林,钱满义。DSP技术及其应用。清华大学出版社,北京交通大学出版社。2009(2)张雄伟,曹铁勇,陈亮,杨吉斌等。 DSP芯片的原理与开发应用(第4版)。 电子工业出版社,2009陈金鹰。DSP技术及应用。机械工业出版社,2004(3)张彦 编。DSP技术及应用实验指导书.郑州轻工业学院 计算机及通信工程学院。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1