资源描述:
《dsp论文-基于dsp用fft变换进行分析》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、《DSP应用》课程论文基于DSP用FFT变换进行分析课程名称:《DSP应用》学生姓名:张振兴学号:4学院:信息科学与工程学院专业班级:电信1102指导老师姓名:王洪群时间:2014年11月30日摘要:随着计算机和微电子技术的飞速发展,基于数字信号处理的频谱分析已经应用到各个领域并且发挥着重要作用。信号处理方法是当前机械设备故障诊断中重要的技术基础之一,分析结果的精确程度是诊断成功与否的关键因素。研究频谱分析是当前主要的发展方向之一。数字信号处理基本上从两个方面来解决信号的处理问题:一个是时域方法,即
2、数字滤波;另一个是频域方法,即频谱分析.本文主要介绍了离散傅里叶变换以及快速傅里叶变换,通过对DFT以及FFT算法进行研究,从基础深入研究和学习,掌握FFT算法的关键。通过对DSP芯片工作原理以及开发环境的学习,掌握CCS的简单调试和软件仿真,在DSP芯片上实现对信号的实时频谱分析。关键词:DFT;FFT;频谱分析;DSP;1、绪论随着数字技术与计算机技术的发展,数字信号处理(DSP)技术已深入到各个学科领域。近些年来,数字信号处理技术同数字计算器、大规模集成电路等,有了突飞猛进的发展。数字信号处理
3、器(DSP)是一种可编程的高性能处理器。它不仅是一种适用于数字信号处理,而且在图像处理、语音处理、通信等领域得到广泛的应用。DSP处理器中集成有高速的乘法硬件,能快速的进行大量的乘法加法运算频谱分析在生产实践和科学研究中获得日益广泛的应用。例如,对汽车、飞机、轮船、汽轮机等各类旋转机械、电机、机床等机器的主体或部件进行实际运行状态下的谱分析,可以提供设计数据和检验设计效果,或者寻找振源和诊断故障,保证设备的安全运行等;在声纳系统中,为了寻找海洋水面船只或潜艇,需要对噪声信号进行谱分析,以提供有用信息
4、,判断舰艇运动速度、方向、位置、大小等。因此对谱分析方法的研究,受到普遍注意和重视,是当前信号处理技术中一个十分活跃的课题。本文主要介绍基于DSP用FFT变换实现对信号的频谱分析。研究离散傅里叶变换以及快速傅里叶变换的原理及算法。快速傅里叶变换和离散傅里叶变换的基本理论是一样的,它根据离散傅里叶变换的奇、偶、虚、实等特性,对离散傅里叶变换进行了改进。在计算机系统或者数字系统中广泛应用者快速傅里叶变换,这是一个巨大的进步。本文主要解决的问题就是如何对信号的频谱进行研究,使FFT更广泛的应用于科学研究。
5、3、程序及DSP的实现EXPFFTAD50.CexternvoidInitC5402(void);externvoidOpenMcBSP(void);externvoidCloseMcBSP(void);externvoidREADAD50(void);externvoidWRITEAD50(void);/*************************************************************************MainFunctionProgram******
6、*****************************************************************/#include"stdio.h"#include"math.h"voidkfft(pr,pi,n,k,fr,fi,l,il)intn,k,l,il;doublepr[],pi[],fr[],fi[];{intit,m,is,i,j,nv,l0;doublep,q,s,vr,vi,poddr,poddi;for(it=0;it<=n-1;it++){m=it;is=0;
7、for(i=0;i<=k-1;i++){j=m/2;is=2*is+(m-2*j);m=j;}fr[it]=pr[is];fi[it]=pi[is];}pr[0]=1.0;pi[0]=0.0;p=6./(1.0*n);pr[1]=cos(p);pi[1]=-sin(p);if(l!=0)pi[1]=-pi[1];for(i=2;i<=n-1;i++){p=pr[i-1]*pr[1];q=pi[i-1]*pi[1];s=(pr[i-1]+pi[i-1])*(pr[1]+pi[1]);pr[i]=p-q
8、;pi[i]=s-p-q;}for(it=0;it<=n-2;it=it+2){vr=fr[it];vi=fi[it];fr[it]=vr+fr[it+1];fi[it]=vi+fi[it+1];fr[it+1]=vr-fr[it+1];fi[it+1]=vi-fi[it+1];}m=n/2;nv=2;for(l0=k-2;l0>=0;l0--){m=m/2;nv=2*nv;for(it=0;it<=(m-1)*nv;it=it+nv)for(j=0;j<=(nv/2