文档详情

DSP课程设计基于MATLAB的FFT算法实现09通信本2班.doc

发布:2017-08-11约1.63万字共29页下载文档
文本预览下载声明
目 录 1 引言 1 2 基于MATLAB的FFT算法实现 2 2.1系统总体流程图 2 2.2 FFT运算规律及编程思想 3 2.2.1语音信号的采集 3 2.2.2 DIT-FFT算法的基本原理 3 2.2.3 DIT-FFT算法的运算规律及编程思想 5 3 Matlab程序实现 10 4 系统人机对话界面 13 4.1 GUI简介 13 4.2 界面设计 13 4.3 运行调试 14 5 心得体会 16 参考文献 17 附录Ⅰ 18 附录Ⅱ 21 MATLAB是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks公司出品的商数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。MATLAB 的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。附加的工具箱(单独提供的专用 MATLAB 函数集)扩展了 MATLAB 环境,以解决这些应用领域内特定类型的问题。MATLAB重要应用的领域之一。 对于有限长序列x(n),若要求其N点的需要经过次复数乘法运算和N*(N-1)次复数加法运算。随着N的增加,运算量将急剧增加,而在实际问题中,N往往是较大的,如当N=1024时,完成复数乘法和复数加法的次数分别为百万以上,无论是用通用计算机还是用DSP芯片,都需要消耗大量的时间,不能满足实时的要求。因此,DFT的这种运算只能进行理论上的计算,不适合对实时处理要求高的场合。因此,研究作为DSP的快速算法的FFT是相当必要的,而且目前仍在改进和提高,它是根据离散变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。2.1系统总体流程图 2.2 FFT运算规律及编程思想 2.2.1语音信号的采集 利用PC机自带的录音机,录制一段语音信号,保存格式为wave的文件,并将其保存在电脑中。 在MATLAB中,fn=input( Enter WAV filename:,s); [x,fs,nb]=wavread(fn,[n1 n2]); 用于读取语音,采样值放在向量中,fs表示采样频率(Hz),表示采样位数。[1 n2]表示读取从1点到2点的值(若只有一个的点则表示读取前点的采样值)。sound(x,fs,); 用于对声音的回放。向量则就代表了一个信号(也即一个复杂的“函数表达式”)也就是说可以像处理一个信号表达式一样处理这个声音信号。 采集到语音信号之后,需要对语音信号进行分析,如语音信号的时域分析、频谱分析、谱图分析。 22.2 DIT-FFT算法的基本原理 快速傅里叶变换(FFT)是为提高DFT运算速度而采用的一种算法。 对一个有限长度序列x(n)的N点的DFT为: 所以,要求N点的DFT,需要N2次的复数乘法运算,N*(N-1)次复数乘法运算算。随着N的增加,运算量将急剧增加,而在实际问题中,N往往是较大的,如当N=1024时,完成复数乘法和复数加法的次数分别为百万以上,无论是用通用计算机还是用DSP芯片,都需要消耗大量的时间,不能满足实时的要求)1)周期性 (2)共轭对称性 (3)可约性 本次课设要求用用基2的按时间抽取的FFT算法(DIT-FFT)实现FFT功能,设序列x(n)的长度为N,且N满足N=2M,M为正整数。若N不能满足上述关系,可以将序列x(n)补零实现。按时间抽取基2-FFT算法的基本思路是将N点序列按时间下标的奇偶分为两个N/2点序列,计算这两个N/2点序列的N/2点DFT,计算量可减小约一半;每一个N/2点序列按照同样的划分原则,可以划分为两个N/4点序列,最后,将原序列划分为多个2点序列,将计算量大大降低。 按时间下标的奇偶将N点x(n)分别抽取组成两个N/2点序列,分别记为x1(n)和x2(n),将x(n)的DFT转化为x1(n)和x2(n)的DFT的计算。 利用旋转因子的可约性,即: 用蝶形运算可表示为如图2所示: 以此类推,还可以把x1(n)和x2(n)按n值得奇偶分为两个序列,这样就达到了降N得目的,从而减少了运算量。FFT对DFT的数学运算量改进: 直接采用DFT进行计算,运算量为N次复数乘法和N*(N-1)次复数乘法。 当采用M次FFT时,由N=2M求得M=logN,运算流图有M级蝶形,每一级都由N/2个蝶形运算构成,这样每一级蝶形运算都需要N/2次复数乘法和N次复数加法。M级运算共需要复数乘法次数为C=N/2*M,复数加法次数为C=N*M。 当N值较大时,FFT减少运算量的特点表现的越明显。 22.3 DIT-FFT算法的运算规律及编程思想 为了编写DIT-FFT算法的运算程序,首先要分析其运算规律,总结编程思想并绘出程序框
显示全部
相似文档