基于GUI的FFT运算毕业设计论文.docx

上传人:b****1 文档编号:612447 上传时间:2022-10-11 格式:DOCX 页数:36 大小:497.36KB
下载 相关 举报
基于GUI的FFT运算毕业设计论文.docx_第1页
第1页 / 共36页
基于GUI的FFT运算毕业设计论文.docx_第2页
第2页 / 共36页
基于GUI的FFT运算毕业设计论文.docx_第3页
第3页 / 共36页
基于GUI的FFT运算毕业设计论文.docx_第4页
第4页 / 共36页
基于GUI的FFT运算毕业设计论文.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

基于GUI的FFT运算毕业设计论文.docx

《基于GUI的FFT运算毕业设计论文.docx》由会员分享,可在线阅读,更多相关《基于GUI的FFT运算毕业设计论文.docx(36页珍藏版)》请在冰豆网上搜索。

基于GUI的FFT运算毕业设计论文.docx

基于GUI的FFT运算毕业设计论文

基于GUI的FFT运算

毕业设计论文

1引言

MATLAB是矩阵实验室(MatrixLaboratory)的简称,是美国MathWorks公司出品的商数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。

MATLAB的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。

附加的工具箱(单独提供的专用MATLAB函数集)扩展了MATLAB环境,以解决这些应用领域内特定类型的问题。

它以矩阵运算为基础,把计算、可视化、程序设计融合在一个简单易用的交互式工作环境中,是一款数据分析和处理功能都非常强大的工程适用软件。

它可以将声音文件变换为离散的数据文件,然后利用其强大的矩阵运算能力处理数据,如数据滤波、傅立叶变换、时域和频域分析、声音回放以及各种图的呈现等,它的信号处理与分析工具箱位语音信号分析提供了十分丰富的功能函数,利用这些功能函数可以快捷而又方便的完成语音信号的处理和分析以及信号的可视化。

数字信号处理是MATLAB重要应用的领域之一。

对于有限长序列x(n),若要求其N点的傅里叶变换(DFT)需要经过次复数乘法运算和次复数加法运算。

随着N的增加,运算量将急剧增加,而在实际问题中,N往往是较大的,如当N=1024时,完成复数乘法和复数加法的次数分别为百万以上,无论是用通用计算机还是用DSP芯片,都需要消耗大量的时间和机器内存,不能满足实时的要求。

因此,DFT的这种运算只能进行理论上的计算,不适合对实时处理要求高的场合。

因此,研究作为DSP的快速算法的FFT是相当必要的,快速傅里叶变换(FFT)是为提高DFT运算速度而采用的一种算法,快速算法的种类很多,而且目前仍在改进和提高,它是根据离散傅里叶变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。

基于本学期所学的DIT-FFT的运算规律和编程思想以及MATLAB的学习和使用,本课设要求在MATLAB环境下编写基2DIT-FFT算法实现对离散信号的快速傅里叶变换,再与MATLAB软件自带的FFT函数实现对离散信号的傅里叶变换进行比较,如果得到的频谱相同,那么我们编写的程序就是正确的。

本课程设计主要是对数字信号的分析。

 

2MATLAB简介

2.1MATLAB简介

MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。

MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。

它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。

MATLAB和Mathematica、Maple并称为四大数学软件。

它在数学类科技应用软件中在数值计算方面首屈一指。

MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。

MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C、FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。

在新的版本中也加入了对C、FORTRAN、C++、JAVA的支持。

可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。

MATLAB的特点:

(1)高效的数值计算及符号计算功能,能使用户从繁杂的数学运算分析中解脱出来;

(2)具有完备的图形处理功能,实现计算结果和编程的可视化;

(3)友好的用户界面及接近数学表达式的自然化语言,使学者易于学习和掌握;

(4)功能丰富的应用工具箱(如信号处理工具箱、通信工具箱等),为用户提供了大量方便实用的处理工具。

MATLAB产品族可以用来进行以下各种工作:

数值分析、数值和符号计算、工程与科学绘图、控制系统的设计与仿真、数字图像处理技术、数字信号处理技术、通讯系统设计与仿真、MATLAB在通讯系统设计与仿真的应用、财务与金融工程、管理与调度优化计算(运筹学)。

MATLAB的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。

附加的工具箱(单独提供的专用MATLAB函数集)扩展了MATLAB环境,以解决这些应用领域内特定类型的问题。

2.2图形用户界面简介

图形用户界面(GraphicalUserInterface,简称GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。

与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。

GUI是GraphicalUserInterface的简称,即图形用户界面,通常人机交互图形化用户界面设计经常读做“goo-ee”。

准确来说:

GUI就是屏幕产品的视觉体验和互动操作部分。

GUI是一种结合计算机科学、美学、心理学、行为学,及各商业领域需求分析的人机系统工程,强调人—机—环境三者作为一个系统进行总体设计。

这种面向客户的系统工程设计其目的是优化产品的性能,使操作更人性化,减轻使用者的认知负担,使其更适合用户的操作需求,直接提升产品的市场竞争力。

GUI即人机交互图形化用户界面设计。

纵观国际相关产业在图形化用户界面设计方面的发展现状,许多国际知名公司早已意识到GUI在产品方面产生的强大增值功能,以及带动的巨大市场价值,因此在公司内部设立了相关部门专门从事GUI的研究与设计,同业间也成立了若干机构,以互相交流GUI设计理论与经验为目的。

随着中国IT产业,移动通讯产业,家电产业的迅猛发展,在产品的人机交互界面设计水平发展上日显滞后,这对于提高产业综合素质,提升与国际同等业者的竞争能力等等方面无疑起了制约的作用。

GUI的广泛应用是当今计算机发展的重大成就之一,他极大地方便了非专业用户的使用。

人们从此不再需要死记硬背大量的命令,取而代之的是可以通过窗口、菜单、按键等方式来方便地进行操作。

而嵌入式GUI具有下面几个方面的基本要求:

轻型、占用资源少、高性能、高可靠性、便于移植、可配置等特点。

 

3基于MATLAB的FFT算法实现

3.1设计思想

本设计要求选取一张图片,并对图片进行灰度采集,在Matlab环境下编写基2DIT-FFT算法;利用自己编写的算法对已采集的灰度进行FFT及IFFT进行运算,并与Matlab数字信号处理工具箱中的FFT及IFFT函数进行对比研究,验证自编算法的正确性。

3.2系统总体流程图

图3-1系统总体流程图

3.3FFT运算规律及编程思想

3.3.1图片的选取

图片的选取应有一定的原则,应选择亮暗较明显的。

这样对图片灰度进行FFT及IFFT函数时,可得到较明显的结果。

本次课设选取的图片如图3-2所示:

图3-2选取的图片

3.3.2DIT-FFT算法的基本原理

快速傅里叶变换(FFT)是为提高DFT运算速度而采用的一种算法。

对一个有限长度序列x(n)的N点的DFT为:

所以,要求N点的DFT,需要N2次的复数乘法运算,次复数乘法运算算。

随着N的增加,运算量将急剧增加,而在实际问题中,N往往是较大的,如当N=1024时,完成复数乘法和复数加法的次数分别为百万以上,无论是用通用计算机还是用DSP芯片,都需要消耗大量的时间,不能满足实时的要求,不适合于对实时处理要求高的场合。

为了能实时处理DFT,要想减少DFT的运算量可以有两个途径:

第一是降N。

N的值减小了,运算量就减少了;第二是利用旋转因子的周期性,对称性和可约性。

利用这两个途径实现DFT的快速傅里叶变换(FFT),FFT算法基本上可分为按时间抽取的FFT算法(DIT-FFT)和按频率抽取的FFT算法(DIF-FFT)。

旋转因子的性质:

(1)周期性

(2)共轭对称性

(3)可约性

本次课设要求用用基2的按时间抽取的FFT算法(DIT-FFT)实现FFT功能,设序列x(n)的长度为N,且N满足,M为正整数。

若N不能满足上述关系,可以将序列x(n)补零实现。

按时间抽取基2-FFT算法的基本思路是将N点序列按时间下标的奇偶分为两个N/2点序列,计算这两个N/2点序列的N/2点DFT,计算量可减小约一半;每一个N/2点序列按照同样的划分原则,可以划分为两个N/4点序列,最后,将原序列划分为多个2点序列,将计算量大大降低。

按时间下标的奇偶将N点x(n)分别抽取组成两个N/2点序列,分别记为和,将x(n)的DFT转化为和的DFT的计算。

利用旋转因子的可约性,即:

用蝶形运算可表示为如图3-3所示:

图3-3蝶形图

以此类推,还可以把和按n值得奇偶分为两个序列,这样就达到了降N得目的,从而减少了运算量。

FFT对DFT的数学运算量改进:

直接采用DFT进行计算,运算量为次复数乘法和次复数乘法。

当采用M次FFT时,由求得,运算流图有M级蝶形,每一级都由N/2个蝶形运算构成,这样每一级蝶形运算都需要N/2次复数乘法和N次复数加法。

M级运算共需要复数乘法次数为,复数加法次数为。

当N值较大时,FFT减少运算量的特点表现的越明显。

3.3.3DIT-FFT算法的运算规律及编程思想

为了编写DIT-FFT算法的运算程序,首先要分析其运算规律,总结编程思想并绘出程序框图。

1.原位计算

对点的FFT共进行M级运算,每级由N/2个蝶形运算组成。

在同一级中,每个蝶的输入数据只对本蝶有用,且输出节点与输入节点在同一水平线上,这就意味着每算完一个蝶后,所得数据可立即存入原输入数据所占用的数组元素(存储单元),这种原位(址)计算的方法可节省大量内存。

2.蝶形运算

实现FFT运算的核心是蝶形运算,找出蝶形运算的规律是编程的基础。

蝶形运算是分级进行的;每级的蝶形运算可以按旋转因子的指数大小排序进行;如果指数大小一样则可从上往下依次蝶算。

对点的FFT共有M级运算,用L表示从左到右的运算级数(L=1,2,…,M)。

第L级共有个不同指数的旋转因子,用R表示这些不同指数旋转因子从上到下的顺序(R=0,1,…,B-1)。

第R个旋转因子的指数,旋转因子指数为P的第一个蝶的第一节点标号k从R开始,由于本级中旋转因子指数相同的蝶共有个,且这些蝶的相邻间距为,故旋转因子指数为P的最后一个蝶的第一节点标号k为:

,本级中各蝶的第二个节点与第一个节点都相距B点。

应用原位计算,蝶形运算可表示成如下形式:

总结上述运算规律,可采用如下运算方法进行DIT-FFT运算。

首先读入数据,根据数据长度确定运算级数M,运算总点数,不足补0处理。

然后对读入数据进行数据倒序操作。

数据倒序后从第1级开始逐级进行,共进行M级运算。

在进行第L级运算时,先算出该级不同旋转因子的个数(也是该级中各个蝶形运算两输入数据的间距),再从R=0开始按序计算,直到R=B-1结束。

每个R对应的旋转因子指数,旋转因子指数相同的蝶从上往下依次逐个运算,各个蝶的第一节点标号k都是从R开始,以为步长,到(可简取极值N-2)结束。

考虑到蝶形运算有两个输出,且都要用到本级的两个输入数据,故第一个输出计算完毕后,输出数据不能立即

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1