欢迎来到天天文库
浏览记录
ID:37471351
大小:302.00 KB
页数:11页
时间:2019-05-24
《实验八 快速傅立叶变换(FFT)实验》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验七快速傅立叶变换(FFT)实验一实验目的1.熟悉CCS集成开发环境;2.了解FFT的算法原理和基本性质;3.熟悉DSP中cmd文件的作用及对它的修改;4.学习用FFT对连续信号和时域信号进行频谱分析的方法;5.利用DSPLIB中现有的库函数;6.了解DSP处理FFT算法的特殊寻址方式;7.熟悉对FFT的调试方法。二实验内容本实验要求使用FFT变换对一个时域信号进行频谱分析,同时进行IFFT。这里用到时域信号可以是来源于信号发生器输入到CODEC输入端,也可以是通过其他工具计算获取的数据表。本实验使用Matlab语言实现对
2、FFT算法的仿真,然后将结果和DSP分析的结果进行比较,其中原始数据也直接来自Matlab。三实验原理一个N点序列的DFT,以及IDFT分别定义为:如果利用上式直接计算DFT,对于每一个固定的m,需要计算N次复数乘法,N-1次加法,对于N个不同的m,共需计算N的2次方复数乘法,N*(N-1)次复数加法.显然,随着N的增加,运算量将急剧增加,快速傅里叶算法有效提高计算速度(本例使用基2FFT快速算法),利用FFT算法只需(N/2)logN次运算。四知识要点.1、CMD文件的功能及编写2、一种特殊的寻址方式:间接寻址间接寻址是按
3、照存放在某个辅助寄存器的16位地址寻址的。C54x的8个辅助寄存器(AR0—AR7)都可以用来寻址64K字数据存储空间中的任何一个存储单元。3、TMS320C54xDSPLIB中关于FFT变换的一些函数的调用(SPRA480B.pdf)利用DSPLIB库时,在主程序中要包含头文件:54xdsp.lib4、FFT在CCS集成开发环境下的相关头文件#include//定义数据类型的头文件#include//数学函数的头文件,如sqrt.#include//定义数据类型的头文件#
4、include//DSPLIB库文件11五实验程序说明1、实验主要函数/***************************正变换*************************************/cbrev(x,x,NX/2);//倒序rfft(x,64,0);//实数FFT变换//求频谱由于FFT程序计算得到的数据只是频谱的实部和虚部,不包含计算幅度谱的//成分(所以描述DSP的参数中给出计算N点FFT的时间,是指不含计算幅度谱的时间),//因此要得到幅度频谱,必须另外增加程序语句来实现。f
5、or(i=0;i6、*x,DATA*r,unshortn)功能:为了FFT/IFFT得到一个正确顺序的变换结果,对他们的输入数据进行倒序。入口参数:x[2*n]x是一个2*n项的一维数组,数组中数据定义为短整型(16位有符号整型)。数组x是作为输入数据,函数对他的数据进行倒序。r[2*n]r是一个2*n项的一维数组,数组中数据定义为短整型(16位有符号整形)。数组r是作为输出数据,函数对x倒序后的结果存到r中。n定义为数组中复数的个数(两个实数表示一个复数),即为数组大小的1/2。函数的使用:函数是对复数进行倒序的,即把数组x中的数据认为是复数7、。有两个相邻的实数表示一个复数,偶地址为复数的实部,奇地址为复数的虚部。如下式,函数对X[0]+j*X[1],X[2]+j*X[3],………X[2n]+j*X[2n+1]…………X[2*N-2]+j*X[2*N-1]这些数据进行倒序。倒序后的结果也是按复数的实部、虚部依次存到r数组中的。11注意:数组中的元素个数必须为偶数。倒序时采用间接寻址,所以数组的首地址的末log(n)+1必须为0。(2)voidcfft(x,n,scale)原理及源程序说明:功能:对复数进行FFT变换。各项参数:x[2*n]x是一个2*n项的一维数组8、,数组中数据定义为短整形(16位有符号整形)。数组x既作为输入数据,又存放变换后的输出数据。n定义为数组中复数的个数(两个实数表示一个复数),,即为数组大小的1/2。Scale变换系数,如果为0,变换后结果乘以1/nx;否则结果乘以1。函数的使用:函数cfft(x,n,scale)是经过以
6、*x,DATA*r,unshortn)功能:为了FFT/IFFT得到一个正确顺序的变换结果,对他们的输入数据进行倒序。入口参数:x[2*n]x是一个2*n项的一维数组,数组中数据定义为短整型(16位有符号整型)。数组x是作为输入数据,函数对他的数据进行倒序。r[2*n]r是一个2*n项的一维数组,数组中数据定义为短整型(16位有符号整形)。数组r是作为输出数据,函数对x倒序后的结果存到r中。n定义为数组中复数的个数(两个实数表示一个复数),即为数组大小的1/2。函数的使用:函数是对复数进行倒序的,即把数组x中的数据认为是复数
7、。有两个相邻的实数表示一个复数,偶地址为复数的实部,奇地址为复数的虚部。如下式,函数对X[0]+j*X[1],X[2]+j*X[3],………X[2n]+j*X[2n+1]…………X[2*N-2]+j*X[2*N-1]这些数据进行倒序。倒序后的结果也是按复数的实部、虚部依次存到r数组中的。11注意:数组中的元素个数必须为偶数。倒序时采用间接寻址,所以数组的首地址的末log(n)+1必须为0。(2)voidcfft(x,n,scale)原理及源程序说明:功能:对复数进行FFT变换。各项参数:x[2*n]x是一个2*n项的一维数组
8、,数组中数据定义为短整形(16位有符号整形)。数组x既作为输入数据,又存放变换后的输出数据。n定义为数组中复数的个数(两个实数表示一个复数),,即为数组大小的1/2。Scale变换系数,如果为0,变换后结果乘以1/nx;否则结果乘以1。函数的使用:函数cfft(x,n,scale)是经过以
此文档下载收益归作者所有