欢迎来到天天文库
浏览记录
ID:18344030
大小:94.50 KB
页数:5页
时间:2018-09-16
《实验二:用fft作谱分析.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、10.4实验二:用FFT作谱分析1.实验目的(1)进一步加深DFT算法原理和基本性质的理解(因为FFT只是DFT的一种快速算法,所以FFT的运算结果必然满足DFT的基本性质)。(2)熟悉FFT算法原理和FFT子程序的应用。(3)学习用FFT对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便在实际中正确应用FFT。2.实验步骤(1)复习DFT的定义、性质和用DFT做谱分析的有关内容。(2)复习DFT算法原理与编程思想,并对照DIT-FFT运算流图和程序框图,读懂本实验提供的FFT子程序。(3)编制信号产生子程序,产生以下典型信号供谱分析用:应当注意,如果给出
2、的是连续信号,则首先要根据其最高频率确定采样速率以及由频率分辨率选择采样点数N,然后对其进行软件采样(即计算,0≤n≤N-1),产生对应序列。对信号,频率分辨率的选择要以能分辨开其中的三个频率对应的谱线为准则。对周期序列,最好截取周期的整数倍进行谱分析,否则有可能产生较大的分析误差。请实验者根据DFT的隐含周期性思考这个问题。(4)编写主程序图10.4.1给出了主程序框图,供参考。本实验提供FFT子程序和通用绘图子程序。5(1)按实验内容要求,上机实验,并写出实验报告。开始结束读入长度N调用信号产生子程序产生实验信号调用绘图子程序(函数)绘制时间序列波形图调用FFT子程序(函数)计算
3、信号的DFT调用绘图子程序(函数)绘制曲线图10.4.1主程序框图2.上机实验内容(1)对2中所给出的信号逐个进行谱分析。下面给出针对各信号的FFT变换区间N以及对连续信号的采样频率,供实验时参考。(2)令,用FFT计算8点和16点离散傅里叶变换,并根据DFT的对称性,由求出和,并与(1)中所得结果比较。[提示:取N=16时,,。](3)令,重复(2)。3.思考题(1)在N=8时,和的幅频特性会相同吗?为什么?N=16呢?(2)如果周期信号的周期预先不知道,如何用FFT进行谱分析?51.实验报告要求(1)简述实验原理及目的。(2)结合实验中所得给定典型序列幅频特性曲线,与理论结果比较
4、,并分析说明误差产生的原因以及FFT作谱分析时有关参数的选择方法。(3)总结实验所得主要结论。(4)简要回答思考题。2.实验用子程序本实验的主程序比较简单,直接根据图10.4.1所得框图编写程序即可。编程难点是FFT子程序。不过,各种语言的FFT子程序都可在有关信号处理的程序库中找到。由于C语言当前最普及,所以为了为实验提供方便,下面给出C语言FFT函数,供参考。/*DIT-FFT函数(C语言)*/fft——基2DIT——FFT函数要求:指向复数数组指针X,FFT长度为,m为正整数FFT输出结果放在输入复数数组中。/*计算N点FFT子程序*//*xr:=信号序列实部,xi:=信号序列
5、虚部,N:=FFT变换区间长度N=2^M*//*如果信号长度小于N,应该给xr,xi后面补0*//*计算结果X(K)的实部和虚部分别存储在数组xr和xi中*/voidFft(doublexr[],doublexi[],intN,intM){intL,B,J,P,k,i;doublerPartKB,iPartKB;/*分别代表X(K+B)的实部和虚部*/doublerCf[128],iCf[128];/*rCf存储旋转因子实部,iCf存储旋转因子虚部*//*旋转因子数组长度应根据自己要求调整*//*计算旋转因子*/doublePI2=8.0*atan(1.0)for(i=0;i6、++)5{rCf[i]=cos(i*PI2/N);iCf[i]=sin(i*PI2/N);}ChangeOrder(xr,xi,N);/*调用倒序子程序*//*计算各级蝶形*/for(L=1;L<=M;L++){B=(int)(pow(2,(L-1))+0.5);for(J=0;J<=B-1;J++){P=J*((int)(pow(2,(M-L))+0.5));for(k=j;k<=N-1;k+=(int)(pow(2,L)+0.5)){rPactKB=xr[k+B]*rCf[P]-xi[k+B]*iCf[P];iPactKB=xi[k+B]*rCf[P]+xr[k+B]*iCf[P7、];xr[k+B]=xr[k]-rPactKB;xi[k+B]=xi[k]-iPactKB;xr[k]=xr[k]+rPactKB;xi[k]=xi[k]+iPactKB;}}}}/*倒序子程序*/voidChangeOrder(doublexr[],doublexi[],intN){intLH,N1,I,J,K;doubleT;LH=N/2;J=LH;N1=N-2;5for(I=1;I<=N1;I++){if(I
6、++)5{rCf[i]=cos(i*PI2/N);iCf[i]=sin(i*PI2/N);}ChangeOrder(xr,xi,N);/*调用倒序子程序*//*计算各级蝶形*/for(L=1;L<=M;L++){B=(int)(pow(2,(L-1))+0.5);for(J=0;J<=B-1;J++){P=J*((int)(pow(2,(M-L))+0.5));for(k=j;k<=N-1;k+=(int)(pow(2,L)+0.5)){rPactKB=xr[k+B]*rCf[P]-xi[k+B]*iCf[P];iPactKB=xi[k+B]*rCf[P]+xr[k+B]*iCf[P
7、];xr[k+B]=xr[k]-rPactKB;xi[k+B]=xi[k]-iPactKB;xr[k]=xr[k]+rPactKB;xi[k]=xi[k]+iPactKB;}}}}/*倒序子程序*/voidChangeOrder(doublexr[],doublexi[],intN){intLH,N1,I,J,K;doubleT;LH=N/2;J=LH;N1=N-2;5for(I=1;I<=N1;I++){if(I
此文档下载收益归作者所有