#define"> #define" />
实验三 快速傅里叶算法(FFT)实验----实验箱C语言程序注释.docx

实验三 快速傅里叶算法(FFT)实验----实验箱C语言程序注释.docx

ID:62029304

大小:70.58 KB

页数:5页

时间:2021-04-15

实验三 快速傅里叶算法(FFT)实验----实验箱C语言程序注释.docx_第1页
实验三 快速傅里叶算法(FFT)实验----实验箱C语言程序注释.docx_第2页
实验三 快速傅里叶算法(FFT)实验----实验箱C语言程序注释.docx_第3页
实验三 快速傅里叶算法(FFT)实验----实验箱C语言程序注释.docx_第4页
实验三 快速傅里叶算法(FFT)实验----实验箱C语言程序注释.docx_第5页
资源描述:

《实验三 快速傅里叶算法(FFT)实验----实验箱C语言程序注释.docx》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、实验三快速傅里叶算法(FFT)实验----实验箱C语言程序注释#include"myapp.h"#include"ICETEK-VC5509-EDU.h"#include"scancode.h"#include#definePI3.1415926#defineSAMPLENUMBER128voidInitForFFT();/*蝶形算子乘数(也称旋转因子)exp(-j*2*PI*i/N)初始化;方便调用*/voidMakeWave();  /*该函数能产生各种各样的谐波*/intINPUT[SAMPLENUMBER],DATA[SAMPLENUMBE

2、R];floatfWaveR[SAMPLENUMBER],fWaveI[SAMPLENUMBER],w[SAMPLENUMBER];floatcos_tab[SAMPLENUMBER],sin_tab[SAMPLENUMBER];main(){inti;InitForFFT();/*蝶形算子中的乘数(也称旋转因子)exp(-j*2*PI*i/N)事先初始化好,方便调用*/MakeWave();/*该函数能产生各种各样的谐波*/for(i=0;i

3、,INPUT也是输入信号的实数部分fWaveR,序列fWaveR作为FFT()函数的实参,对应FFT()函数的第1个形参dataR:也对应信号流图的输入输出的实数部分dataR*/fWaveI[i]=0.0f;/*因输入时间序列信号INPUT为实数序列信号,所以输入信号的虚数部分fWaveI=0,序列fWaveI作为FFT()函数的实参,对应FFT()函数的第2个形参dataI:也对应信号流图蝶形算子的输入输出的虚数部分dataI*/w[i]=0.0f;/*初始化输入信号波形的频谱值为0*/}FFT(fWaveR,fWaveI);/*对输入波形进行FFT变换,FF

4、T算法采用同址运算,实参fWaveR,fWaveI既是信号流图第一级的输入信号,也作为信号流图每级蝶形算子的输出的存储数组,也是每级蝶形算子的输入数组,即可递推下去*/for(i=0;i

5、的实数部分dataR[],此时实部dataR[]是实数,虚部dataI[]=0),*dataR[],dataI[]又作为信号流图中每级FFT蝶形算子的输出的存储数组单元,每级的输出是复数,此时虚部就可能不是0,*因输入信号的虚部dataI[]=0,在计算每级蝶形算子的输出前,dataI[]又用来暂存将输入信号序列进行序号码位倒置后的重新排列的数据,将序号码位倒置后的重排数据传给dataR[]后,再恢复dataI[]=0*/voidFFT(floatdataR[SAMPLENUMBER],floatdataI[SAMPLENUMBER]){/*原程序是128点的FF

6、T算法(可改成256点或其他值),采用时间抽取DIT的FFT算法,对应算法信号流图的输入信号时间序列序号按码位倒置顺序排列,输出频域序列顺序排列。*/intx0,x1,x2,x3,x4,x5,x6,xx;/*二进制序号值(x6x5x4x3x2x1x0)的各个位*/inti,j,k,b,p,L;floatTR,TI,temp;/**********followingcodeinvertsequence*****下面进行时间序列序号的码位倒置,二进制序号值(x6x5x4x3x2x1x0)的各个位独立出来再反向*******/for(i=0;i

7、;i++){x0=x1=x2=x3=x4=x5=x6=0;//128点FFT序号值用7位二进制(x6x5x4x3x2x1x0)表示,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;/*/号代表除,可用右移实现*///提取128点输入信号序列的原顺序排列的序号(即算法信号流图上从上向下按顺序排列的位置序号)i对应的7位二进制数(b6b5b4b3b2b1b0)每位的值(x6x5x4x3x2x1x0)xx=x0*64+x1*3

8、2+x2*

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。