用fft作频谱分析

用fft作频谱分析

ID:35319918

大小:149.50 KB

页数:5页

时间:2019-03-23

用fft作频谱分析_第1页
用fft作频谱分析_第2页
用fft作频谱分析_第3页
用fft作频谱分析_第4页
用fft作频谱分析_第5页
资源描述:

《用fft作频谱分析》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、一、用FFT作频谱分析1原理及目的设x(n)是一个长度为M的有限长序列,则定义x(n)的N点DiscreteFourierTransform以及X(k)的N点InverseDiscreteFourierTransform为DFT的实质是:有限长序列的傅立叶变换的有限点离散采样——频域离散化方法。DFT存在许多快速算法FFT.FFT的基本思想在于,将原有的N点序列分成两个较短的序列,这两个序列的DFT组合起来,得出原序列的DFT。时域抽取法基本原理设,M为自然数将长度为N的序列x(n)按n的奇偶分成两组即其中应用旋转因子的周期性:上式可见,一个N点DFT已

2、分解为两个N/2点的DFTX1(k)与X2(k)的组合。此时计算量已经变化。将此过程继续进行下去,最后分解为2点FFT.2程序流程图及源代码开始输入x(n),MN=2M倒序L=1,MJ=0,B-1k=J,N-1,2LL表示运算级数旋转因子个数对旋转因子计数计算旋转因子指数每个旋转因子对应2M-L个蝶形运算。两个蝶形运算第一个输入点‘距离’是2L旋转因子个数对旋转因子计数计算旋转因子指数每个旋转因子对应2M-L个蝶形运算。两个蝶形运算第一个输入点‘距离’是2L/*文件名为yin_fft.c,功能为计算FFT的子函数,以便被其他程序调用*/#include"

3、math.h"#include"stdio.h"voidchange(floatxr[],floatxi[],intNN){inti,j,k,lh;doublet;j=NN/2;for(i=1;ij){t=xr[i];xr[i]=xr[j];xr[j]=t;t=xi[i];xi[i]=xi[j];xi[j]=t;}k=NN/2;while(j>=k){j=j-k;k=k/2;}j=j+k;/*printf("j=%-3d",j);*/}}voidyin_fft(floatxr[],floatxi[],intN){intL,

4、M,B,P,i,j,k;doublerpart,ipart;doublerwn[64],iwn[64];doublepi2=8.0*atan(1.0);M=(int)(log10(N)/log10(2));for(i=0;i

5、)(pow(2,L))){rpart=xr[k+B]*rwn[P]-xi[k+B]*iwn[P];ipart=xr[k+B]*iwn[P]+xi[k+B]*rwn[P];xr[k+B]=xr[k]-rpart;xi[k+B]=xi[k]-ipart;xr[k]=xr[k]+rpart;xi[k]=xi[k]+ipart;}}}}/*文件名为draw.c,功能为做x(n)及其频谱X(k)的特性曲线*/#include"graphics.h"#include"math.h"#include"yin_fft.c"#definepi3.142main(){int

6、i,fs,N1,N2,XX;intdriver=DETECT,gmode;floatxr[32];floatxi[32],xi2[32];fs=64,N1=16,N2=32,XX=40;initgraph(&driver,&gmode,"");for(i=0;i<32;i++){xi[i]=0;xi2[i]=0;}for(i=0;i

7、40*xr[i]));yin_fft(xr,xi,N1);moveto(XX,400-(int)(10*sqrt(xr[0]*xr[0]+xi[0]*xi[0])));for(i=0;i

8、150-(int)(40*xr[i]));yin_fft(xr,xi2,N2);

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

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

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