基于MATLAB的FFT算法的设计.doc
文本预览下载声明
唐 山 学 院
课 程 设 计
题 目
系 (部)
班 级 13电信1班
姓 名
学 号
指导教师 王超
2016 年 月 日至 月 日 共 周2016年 月 日目 录1 引言 1
2 设计任务和原理 2
2.1设计任务 2
2.2设计原理 2
3软件介绍 5
3.1软件概述 5
3.2界面基本操作 5
3.3 MATLAB主要特点 8
4 MATLAB程序实现 9
4.1程序流程图 9
4.2程序分析 9
4.2.1原始图像程序及分析 9
4.2.2灰度图像程序及分析 10
4.2.3自建的FFT程序及分析 11
4.2.4自建的IFFT程序及分析 12
4.2.5内置的FFT程序及分析 12
4.2.6内置的IFFT程序及分析 13
4.3程序运行结果 13
4.4自建FFT与内置FFT图形及比较 14
4.5 IFFT结果与原灰度图形及比较 15
5 GUI界面 16
5.1 GUI简介 16
5.2界面设计 16
5.3运行调试 9
6总结体会 20
参考文献 1
附录Ⅰ FFT算法的程序 22
附录Ⅱ GUI设计的程序 26
1 引言
数字信号处理(Digital Signal Processing,DSP)是一门涉及许多学科而又广泛应用于许多领域的新兴学科,是一种通过使用数学技巧执行转换或提取信息,来处理显示信号的方法,这些信号由数字序列表示。
FFT(Fast Fourier Transformation),即为快速傅立叶变换,是离散傅立叶变换的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。它对傅氏变换的理论并没有新的发现,但是对于在计算机系统或者说数字系统中应用离散傅立叶变换,可以说是进了一大步,在实际应用中,FFT是最常见的数字信号处理算法,它在各种数字信号处理系统中扮演重要的角色。在信号处理过程中。频域分析往往比时域分析方便和高效,FFT是时域和频域转换的基本运算。
正是鉴于DFT极为复杂的时间复杂度,1965年J.W.Cooley和J.W.Tukey巧妙的利用WN因子的周期性和对称性,提出了一个DFT的快速算法,即快速傅立叶变换(FFT),从而使得DFT在信号处理中才得到真正的广泛应用。
DFT是一种应用广泛的数学变换工具,MATLAB是一款功能强大的科学计算语言。MATLAB提供的FFT函数解决了DFT的快速计算问题,但由于它是内建函数而不能了解到软件实现的过程。本文以按时间抽取的基2FFT算法为例,根据快速傅立叶变换的原理和规律,绘出了算法实现的程序框图,列出了MATLAB环境下软件实现的程序,建立了从算法理论到程序实现的完整概念。
在信号处理中,DFT(离散傅立叶变换)的计算具有举足轻重的地位。但是基于其复杂的计算,直接应用起来十分麻烦,基于此,本文利用MATLAB软件对有限长度信号的DFT进行改进,提出FFT(快速傅立叶变换),并利用FFT对所给连续时间和离散时间信号做了频谱分析。
图像信号的处理主要是用MATLAB作为工具平台,设计中涉及到图像的选取、存储和读取、灰度处理、FFT变换、IFFT变换、频谱分析。通过数字信号处理课程的理论知识的综合运用,以及选做系统人机对话界面,用GUI界面完成人机交互使用,从实践上初步实现对数字信号的处理。
2 设计任务和原理
2.1设计任务
所设计的FFT算法应完成以下功能:
(1)在MATLAB环境下编写FFT算法(不调用系统现有函数);
(2)实现对选定图片进行FFT计算、还原(IFFT计算),并与系统FFT函数做对比,进行分析;
(3)设计GUI界面。
设计要求:
1.根据题目要求进行算法GUI总体设计。
2.完成算法具体部分的设计。
(1)算法原理图。
(2)算法原理说明。
3.算法程序的设计。
(1)对选定图片进行自编FFT计算与还原,并与自带函数进行对比;
(2)完整源程序。
2.2 设计原理
对于有限长序列x(n),若要求其N点的傅里叶变换(DFT)需要经过次复数乘法运算和N*(N-1)次复数加法运算。随着N的增加,运算量将急剧增加,而在实际问题中,N往往是较大的,如当N=1024时,完成复数乘法和复数加法的次数分别为百万以上,无论是用通用计算机还是用DSP芯片,都需要消耗大量的时间和机器内存,不能满足实时的要求。因此,DFT的这种运算只能进行理论上的计算,不适合对实时处理要求高的场合。因此,研究作为DSP的快速算法
显示全部