DSP大作业--快速傅立叶变换实验与设计(共11页).doc

上传人:飞****2 文档编号:16270957 上传时间:2022-05-16 格式:DOC 页数:11 大小:150KB
返回 下载 相关 举报
DSP大作业--快速傅立叶变换实验与设计(共11页).doc_第1页
第1页 / 共11页
DSP大作业--快速傅立叶变换实验与设计(共11页).doc_第2页
第2页 / 共11页
点击查看更多>>
资源描述

《DSP大作业--快速傅立叶变换实验与设计(共11页).doc》由会员分享,可在线阅读,更多相关《DSP大作业--快速傅立叶变换实验与设计(共11页).doc(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上DSP原理及应用大作业 快速傅立叶变换 专业:XXXX姓名:XXX 学号:XX指导老师:XX时间:2XXXX快速傅立叶变换(FFT)实验一、设计目的 1.在理论学习的基础上,通过本实验,加深对FFT的理解,熟悉FFT子程序。 2.熟悉应用FFT对典型信号进行频谱分析的方法 3.了解应用FFT进行信号频谱分析过程中可能出现的问题以便在实际中正确应用FFT。4.掌握用窗函数法设计 FFT 快速傅里叶的原理和方法; 5熟悉 FFT 快速傅里叶特性;二、所需设备 PC兼容机一台,操作系统为 Windows2000( 或 Windows98 , WindowsXP ,以下默认为

2、 Windows2000),安装 Code Composer Studio 2.0 软件。三、设计内容 本试验要求使用 FFT 变换求一个时域信号的频域特性,并从这个频域特性求出该信号的频率值。使用c语言实现对 FFT 算法的仿真,然后使用 DSP 汇编语言实现对 FFT 的 DSP编程。本实验采用软件仿真,不需设置硬件。四、设计原理 在各种信号序列中,有限长序列信号处理占有很重要地位,对有限长序列,我们可以使用离散Fouier变换(DFT)。这一变换不但可以很好的反映序列的频谱特性,而且易于用快速算法在计算机上实现,当序列x(n)的长度为N时,它的DFT定义为:,反换为:有限长序列的DFT是

3、其Z变换在单位圆上的等距采样,或者是序列Fourier变换的等距采样,因此可以用于序列的谱分析。 FFT并不是与DFT不同的另一种变换,而是为了减少DFT运算次数的一种快速算法。它是对变换式进行一次次分解,使其成为若干小点数的组合,从而减少运算量。常用的FFT是以2为基数的,其长度 N=2L,它的效率高,程序简单使用非常方便,当要变换的序列长度不等于2的整数次方时,为了使用以2为基数的FFT,可以用末位补零的方法,使其长度延长至2的整数次方。在运用DFT进行频谱分析的过程中可能产生几种问题:(1)混叠 序列的频谱时被采样信号的周期延拓,当采样速率不满足Nyquist定理时,就会发生频谱混叠,使

4、得采样后的信号序列频谱不能真实的反映原信号的频谱。 避免混叠现象的唯一方法是保证采样速率足够高,使频谱混叠现象不致出现,即在确定采样频率之前,必须对频谱的性质有所了解,在一般情况下,为了保证高于折叠频率的分量不会出现,在采样前,先用低通模拟滤波器对信号进行滤波。(2)泄漏 实际中我们往往用截短的序列来近似很长的甚至是无限长的序列,这样可以使用较短的DFT来对信号进行频谱分析,这种截短等价于给原信号序列乘以一个矩形窗函数,也相当于在频域将信号的频谱和矩形窗函数的频谱卷积,所得的频谱是原序列频谱的扩展。 泄漏不能与混叠完全分开,因为泄漏导致频谱的扩展,从而造成混叠。为了减少泄漏的影响,可以选择适当

5、的窗函数使频谱的扩散减至最小。DFT是对单位圆上Z变换的均匀采样,所以它不可能将频谱视为一个连续函数,就一定意义上看,用DFT来观察频谱就好像通过一个栅栏来观看一个图景一样,只能在离散点上看到真实的频谱,这样就有可能发生一些频谱的峰点或谷点被“尖桩的栅栏”所拦住,不能别我们观察到。 减小栅栏效应的一个方法就是借助于在原序列的末端填补一些零值,从而变动DFT的点数,这一方法实际上是人为地改变了对真实频谱采样的点数和位置,相当于搬动了每一根“尖桩栅栏”的位置,从而使得频谱的峰点或谷点暴露出来。 用FFT可以实现两个序列的圆周卷积。在一定的条件下,可以使圆周卷积等于线性卷积。一般情况,设两个序列的长

6、度分别为N1和N2,要使圆周卷积等于线性卷积的充要条件是FFT的长度 NN1N2 对于长度不足N的两个序列,分别将他们补零延长到N。 当两个序列中有一个序列比较长的时候,我们可以采用分段卷积的方法。有两种方法: 重叠相加法。将长序列分成与短序列相仿的片段,分别用FFT对它们作线性卷积,再将分段卷积各段重叠的部分相加构成总的卷积输出。 重叠保留法。这种方法在长序列分段时,段与段之间保留有互相重叠的部分,在构成总的卷积输出时只需将各段线性卷积部分直接连接起来,省掉了输出段的直接相加。 (3) 栅栏效应 DFT是对单位圆上z变换的均匀采样,所以它不可能将频谱视为一个连续 函数,从某种意义上讲,用DF

7、T来观察频谱就如同通过一个栅栏来观看景象一 样,只能在离散点上看到真实的频谱,这样一些频谱的峰点或谷点就可能被尖 桩的栅栏挡住,也就是正好落在两个离散采样点之间,不能被观察到。减小栅栏效应的一个方法是在原序列的末端填补一些零值,从而变动DFT 的点数,这一方法实际上是人为地改变了对真实频谱采样的点数和位置,相当于 搬动了尖桩栅栏的位置,从而使得频谱的峰点或谷点暴露出来。(4) DFT的分辨率填补零值可以改变对DTFT的采样密度,人们常常有一种误解,认为补零可以提高DFT的频率分辨率,事实上,DFT的频率分辨率通常规定为,这里的N是指信号的有效长度,而不是补零的长度。不同长度的,其DTFT的结果

8、是不同的;而相同长度的尽管补零的长度不同其DTFT的结果应是相同的,它们的DFT只是反映了对相同的DTFT采用了不同的采样密度。总结一下: 要提高DFT分辨率只有增加信号的截取长度N。五、实验内容1、原来的程序下做出的图专心-专注-专业将程序改为四个节点时的程序如下:#include myapp.h#include csedu.h#include scancode.h#include #define PI 3.#define SAMPLENUMBER 128void InitForFFT();void MakeWave();int INPUTSAMPLENUMBER,DATASAMPLENUM

9、BER;float fWaveRSAMPLENUMBER,fWaveISAMPLENUMBER,wSAMPLENUMBER;float sin_tabSAMPLENUMBER,cos_tabSAMPLENUMBER;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 FFT(fl

10、oat dataRSAMPLENUMBER,float dataISAMPLENUMBER)int x0,x1,x2,x3,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=0;x0=i&0x01; x1=(i/2)&0x01; x2=(i/4)&0x01; x3=(i/8)&0x01;xx=x0*8+x1*4+x2*2+x3;dataIxx=dataRi;for ( i=0;iSAMPLENUMBER;i+ )dataR

11、i=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,8-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+

12、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(dataRi*dataRi+dataIi*dataIi); /* END FFT */void InitForFFT()int i;for ( i=0;iSAMPLENUMBER;i+ )sin_tabi=s

13、in(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;得出的图为: 程序改为八个节点时:#include myapp.h#include csedu.h#include scancode.h#include #define PI 3.#define SAMPLENUMBER 128void InitForFFT();void MakeWave();int IN

14、PUTSAMPLENUMBER,DATASAMPLENUMBER;float fWaveRSAMPLENUMBER,fWaveISAMPLENUMBER,wSAMPLENUMBER;float sin_tabSAMPLENUMBER,cos_tabSAMPLENUMBER;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 (

15、 1 );/ break pointvoid FFT(float dataRSAMPLENUMBER,float dataISAMPLENUMBER)int x0,x1,x2,x3,x4,x5,x6,x7,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=

16、(i/32)&0x01; x6=(i/64)&0x01;x7=(i/128)&x01;xx=x0*128+x1*64+x2*32+x3*16+x4*8+x5*4+x6*2+x7;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,8-L)*j; */p=p*2; i-;p=p*j;for ( k=j;k128;k=k+2*b ) /

17、* 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+b*cos_tabp; /* END for (3) */ /* END for (2) */ /* END for (1) */for (

18、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 ( i=0;iSAMPLENUMBER;i+ )INPUTi=sin(PI*2*i/SAMPLENUMBER*3)*1024;得出的图为:六、总结信号频率和采样频率之间需要满足奈奎斯特采样定理。即采样频率至少是信号频率的2倍,才可能从采样后的数字信号,恢复为原来的模拟信号而保证信号原始信息不丢失。采样点越多精度越高,但采样点很少时,期间的精度几乎相同,可忽略不计,如所做的实验一和二,但当采样点数达到一定程度时,可明显看到精度的改变,如实验三。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁