练习设计要求和目的

上传人:ni****g 文档编号:469649790 上传时间:2023-04-05 格式:DOC 页数:7 大小:222KB
返回 下载 相关 举报
练习设计要求和目的_第1页
第1页 / 共7页
练习设计要求和目的_第2页
第2页 / 共7页
练习设计要求和目的_第3页
第3页 / 共7页
练习设计要求和目的_第4页
第4页 / 共7页
练习设计要求和目的_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《练习设计要求和目的》由会员分享,可在线阅读,更多相关《练习设计要求和目的(7页珍藏版)》请在金锄头文库上搜索。

1、第一章 练习设计要求和目的1.1练习设计要求1、编写FFT程序,N可以自己设置。输入数据从 WAV格式的音频文件中 读取。2、实现数字频谱,以图形的形式显示。设计人机交互界面。3、与Matlab中的fft算法进行比对研究,并对设计结果进行思考和分析。4、分析编写的fft算法的运算时间,进行实际值与估计值的比较。1.2练习目的温习DFT算法原理和对基本性质的理解,FFT是DFT的一种快速算法,学 习FFT程序结构和编程方法。学习FFT对语音信号的谱分析,了解可能出现的 分析误差及其原因,一遍在以后的应用中正确应用 FFT。将理论联系应用到实际, 为接下来进一步的学习打下基础。第二章FFT算法实现

2、原理2对于有限长序列x(n),求其N点的傅里叶变换(DFT)需要经过N次复数 乘法运算和N*(N-1)次复数加法运算。随着N的增加,运算量将急剧增加,而在 实际问题中,N往往是较大的,如当N=1024时,完成复数乘法和复数加法的次 数分别为百万以上,无论是用通用计算机还是用DSP芯片,都需要消耗大量的时间和机器内存,不能满足实时的要求。因此,DFT的这种运算只能进行理论上的计算,不适合对实时处理要求高的场合。因此,研究作为DSP的快速算法的FFT是相当必要的,快速傅里叶变换(FFT)是为提高DFT运算速度而采用 的一种算法,快速算法的种类很多,而且目前仍在改进和提高,它是根据离散傅 里叶变换的

3、奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。 基于所学的DIT-FFT的运算规律和编程思想以及在本科学习中对 MATLAB的学 习和使用,该练习在MATLAB环境下编写基2 DIT-FFT算法实现对语音信号的 快速傅里叶变换,再与MATLAB软件自带的FFT函数实现对语音信号的傅里叶 变换进行比较,如果得到的频谱相同,那么编写的程序就是正确的。其中输入数 据从wav语音文件中获取,用MATLAB采样得到离散序列x1。如果有能力可以 选做系统人机对话界面。用 GUI界面完成人机交互方便使用的。本课程设计主 要是对数字信号的分析。快速傅里叶变换(FFT)是为提高DFT运算速度而采用

4、的一种算法。对一个有限长度序列 x(n)的N点的DFT为:X( k)=刀x (n) WknN (k=0,1,N-1 ; n=0,1,N-1;W=eA-j2 n /N)。求出 N 点的 DFT,需要 NT 次复数乘法运算,N*(N-1)次复数加法运算。当N值较大时,要完成的复数乘法 运算和复数加法运算得次数都非常多,无论是用通用计算机还是用DSP芯片,都需要消耗大量的时间,不适合于对实时处理要求高的场合。为了能实时处理 DFT,要想减少DFT的运算量可以有两个途径:第一是降N , N的值减小了,运算量就减少了;第二是利用旋转因子的周期 性和对称性,可约性。利用这两个途径实现DFT的快速傅里叶变换

5、(FFT),FFT 算法基本上可分为时域抽取法和频域抽取法。W=eA-j2 n /N 的性质:(1) 周期性(2) 共轭对称性(3) 可约性本程序是用基2的按时间抽取的FFT算法(DIT-FFT ),设序列x(n)的长度 为N,且N满足N=2AM,M为正整数。若N不能满足上述关系,可以将序列x(n) 补零实现按时间抽取基2-FFT算法的基本思路是将N点序列按时间下标的奇偶 分为两个N/2点序列,计算这两个 N/2点序列的N/2点DFT,计算量可减小约 一半;每一个N/2点序列按照同样的划分原则,可以划分为两个N/4点序列,最 后,将原序列划分为多个2点序列,将计算量大大降低。按时间下标的奇偶将

6、N点x(n)分别抽取组成两个N/2点序列,分别记为x1(n) 和x2(n),将x(n)的DFT转化为x1(n)和x2(n)的DFT的计算。利用系数wNnk的可约性,即用蝶形运算可表式为:以此类推,还可以把x1(n)和x2(n)按n值得奇偶分为两个序列,这样就达到 了降N得目的,从而减少了运算量。FFT对DFT的数学运算量改进:直接采用DFT进行计算,运算量为NT次 复数乘法和N*(N-1)次复数乘法。当采用M次FFT时,由N=2M求得M=log2N, 运算流图有M级蝶形,每一级都由N/2个蝶形运算构成,这样每一级蝶形运算 都需要N/2次复数乘法和 N次复数加法。M级运算共需要复数乘法次数为 C

7、=N/2*M,复数加法次数为C=N*M。当N值较大时,FFT减少运算量的特点表 现的越明显。第三章 设计具体内容3.1语音信号的读取读取wav文件的数据之后需要对语音信号进行分析,如语音信号的时域分析、频谱分析、语谱图分析。在 MATLAB中,我们可以通过y,fs,bits=wavread( 语音信号路径,N1 N2)语句。用于读取语音,采样值放在向量y中,fs表示采样 频率(Hz),bits表示采样位数。N1 N2表示读取从N1点到N2点的值(若只有 一个N的点则表示读取前N点的采样值)。向量y则就代表了一个信号(也即 一个复杂的 函数表达式”也就是说可以像处理一个信号表达式一样处理这个声

8、音信号。3.2语音信号的时频分析利用MATLAB中的“wavreac命令来读入(采集)语音信号,将它赋值给某 一向量。再对其进行采样,记住采样频率和采样点数。读取wav文件并进行采样:b,fs,bits=wavread(inter.wav,1024); %读取 wav 文件x=reshape(b,1,2048);%从 x 中返回一个 1*2048 的矩阵 x1画出语音信号的时域波形,再对语音信号进行频谱分析。MATLAB提供了快速傅里叶变换算法FFT计算DFT的函数fft。3.3算法运算时间分析采用matlab中的tic和toe指令计算运行时间。tic,t=fft(x),toc测试FFT子程序

9、运算所需时间 tic,t=myditfft(x)测试自编fft算法myditfft运算时间 经过测试,matlab自带的FFT对该语音文件的运算时间为3.4设计图形用户界面如下图所示:图3-1设计图形用户界面在编程开始前一定要按照顺序将各个按键排序好,不然在编程的时候会显得 没有条理。想要在某个按键实现什么功能,可在按键界面上鼠标右击按键,点击 view backs,在点击callback,然后会自动跟踪到那个按键的位置。第四章调试与结果自编算法与机带算法仿真波形比较,我们知道MATLAB软件自带FFT算法, 我们可以通过比较自编算法仿真结果与机带算法仿真结果来检验自编算法的正 确性。自编算法

10、与FFT算法幅值比较图如图4-1所示:图4-1幅值比较图自编算法FFT算法频谱分贝计较图如图7所示:Figure 4g回File Edit View Insert Tci 口氐 Deslctcp Window Help二0气人礬勁毀諾民 S OLTI0暨黑J宜接运直谱音信号FFT频谙特性5001000150020002500频率阳E蛭形运算语音信号FFTSH普荐性50一0050so00图4-2分贝比较图由以上两图可以看出,经过蝶形运算得出的频谱图和信号直接FFT得出的频谱图一致。该程序严格按程序框图编写,思路清晰、容易理解,程序的运行过 程在命令窗中一目了然。通过与 FFT函数运算的结果比对,程序编写正确。MATLAB自带fft算法运算时间远大于自己编写的 FFT算法,在程序编写结构、语句等方面不断改善自编fft算法,提高运算效率

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

当前位置:首页 > 办公文档 > 演讲稿/致辞

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号