数字信号处理课程设计基于MATLAB的FFT算法的设计.doc
《数字信号处理课程设计基于MATLAB的FFT算法的设计.doc》由会员分享,可在线阅读,更多相关《数字信号处理课程设计基于MATLAB的FFT算法的设计.doc(35页珍藏版)》请在三一办公上搜索。
1、唐 山 学 院 数字信号处理 课 程 设 计题 目 基于MATLAB的FFT算法的设计 系 (部) 智能与信息工程学院 班 级 13电信本1班 姓 名 学 号 指导教师 2016 年 2 月 29 日至 3 月 11 日 共 2 周2016年 3 月 11 日目 录1 引言12 设计任务和原理22.1设计任务22.2设计原理23软件介绍53.1软件概述53.2界面基本操作53.3 MATLAB主要特点84 MATLAB程序实现94.1程序流程图94.2程序分析94.2.1原始图像程序及分析94.2.2灰度图像程序及分析104.2.3自建的FFT程序及分析114.2.4自建的IFFT程序及分析1
2、24.2.5内置的FFT程序及分析124.2.6内置的IFFT程序及分析134.3程序运行结果134.4自建FFT与内置FFT图形及比较144.5 IFFT结果与原灰度图形及比较155 GUI界面165.1 GUI简介165.2界面设计165.3运行调试196总结体会20参考文献21附录 FFT算法的程序22附录 GUI设计的程序261 引言数字信号处理(Digital Signal Processing,DSP)是一门涉及许多学科而又广泛应用于许多领域的新兴学科,是一种通过使用数学技巧执行转换或提取信息,来处理显示信号的方法,这些信号由数字序列表示。随着信息时代,数字时代的到来,数字信号处理
3、已经成为一门极其重要的学科和技术领域。以DSP为核心芯片的处理系统日益变成了数字信号处理系统的主流。它广泛用于电子信息、通信、图像处理、语音处理、生物医学、自动控制、地质探测等领域,受到工程设计和使用人员的青睐。FFT(Fast Fourier Transformation),即为快速傅立叶变换,是离散傅立叶变换的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。它对傅氏变换的理论并没有新的发现,但是对于在计算机系统或者说数字系统中应用离散傅立叶变换,可以说是进了一大步,在实际应用中,FFT是最常见的数字信号处理算法,它在各种数字信号处理系统中扮演重要
4、的角色。在信号处理过程中。频域分析往往比时域分析方便和高效,FFT是时域和频域转换的基本运算。正是鉴于DFT极为复杂的时间复杂度,1965年J.W.Cooley和J.W.Tukey巧妙的利用WN因子的周期性和对称性,提出了一个DFT的快速算法,即快速傅立叶变换(FFT),从而使得DFT在信号处理中才得到真正的广泛应用。DFT是一种应用广泛的数学变换工具,MATLAB是一款功能强大的科学计算语言。MATLAB提供的FFT函数解决了DFT的快速计算问题,但由于它是内建函数而不能了解到软件实现的过程。本文以按时间抽取的基2FFT算法为例,根据快速傅立叶变换的原理和规律,绘出了算法实现的程序框图,列出
5、了MATLAB环境下软件实现的程序,建立了从算法理论到程序实现的完整概念。在信号处理中,DFT(离散傅立叶变换)的计算具有举足轻重的地位。但是基于其复杂的计算,直接应用起来十分麻烦,基于此,本文利用MATLAB软件对有限长度信号的DFT进行改进,提出FFT(快速傅立叶变换),并利用FFT对所给连续时间和离散时间信号做了频谱分析。图像信号的处理主要是用MATLAB作为工具平台,设计中涉及到图像的选取、存储和读取、灰度处理、FFT变换、IFFT变换、频谱分析。通过数字信号处理课程的理论知识的综合运用,以及选做系统人机对话界面,用GUI界面完成人机交互使用,从实践上初步实现对数字信号的处理。2 设计
6、任务和原理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的增加,
7、运算量将急剧增加,而在实际问题中,N往往是较大的,如当N=1024时,完成复数乘法和复数加法的次数分别为百万以上,无论是用通用计算机还是用DSP芯片,都需要消耗大量的时间和机器内存,不能满足实时的要求。因此,DFT的这种运算只能进行理论上的计算,不适合对实时处理要求高的场合。因此,研究作为DSP的快速算法的FFT是相当必要的,快速傅里叶变换(FFT)是为提高DFT运算速度而采用的一种算法,快速算法的种类很多,而且目前仍在改进和提高,它是根据离散傅里叶变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。基于本学期所学的DIT-FFT的运算规律和编程思想以及MATLAB的学习和使用,
8、本课设要求在MATLAB环境下编写基-2DIT-FFT算法实现对离散信号的快速傅里叶变换,再与MATLAB软件自带的FFT函数实现对离散信号的傅里叶变换进行比较,如果得到的频谱相同,那么我们编写的程序就是正确的。其中离散信号是自己选取的图像信号,用MATLAB处理得到频谱图以及选用系统人机对话界面,用GUI界面完成人机交互。快速傅立叶变换(FFT)是为提高DFT运算速度而采用的一种算法。对一个有限长度序列的N点的DFT为:所以,要求N点的DFT,需N2的复数乘法运算,次复数乘法运算。随着N的增加,运算量将急剧增加,而在实际问题中,N往往是较大的,如当N=1024时,完成复数乘法和复数加法的次数
9、分别为百万以上,无论是用通用计算机还是用DSP芯片,都需要消耗大量的时间,不能满足事实的要求,不适合对实时处理要求高的场合。为了能实时处理DFT,要想减少DFT的运算量可以有两个途径:一是降N,N的值减小了,运算量就减少了;第二是利用旋转因子的周期性,对称性和可约性。利用这两个途径实现DFT的快速傅立叶变换(FFT),FFT算法基本上可分为按时间抽取的FFT算法(FFT)和按频率抽取的FFT算法(FFT)。旋转因子的性质:周期性 共轭对称性 可约性 , 本次课设要求用基2的按时间抽取的FFT算法(DIT-FFT)实现FFT功能,设序列想x(n)的长度为N,且N满足N=2M,M为正整数。若N不能
10、满足上述关系,可以将序列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),将的DFT转化为x1(n)和x2(n)的DFT的计算。利用旋转因子的可约性,即:用蝶形运算可表示为如图2-1所示:图2-1 DIT-FFT蝶形运算流图符号以此类推,还可以按n值的奇偶分为两个序列,这样就达
11、到了降N的目的,从而减少了运算量。FFT和DFT的数学运算量改进。直接采用DFT进行运算,运算量为次复数乘法和次复数乘法。当采用M次FFT时,由求得,运算流图有M级蝶形,每一级都由N/2个蝶形运算构成,这样每一级蝶形运算都需要N/2次复数乘法和N次复数加法。M级运算共需要复数乘法次数为,复数加法次数为。当N值较大时,FFT减少运算量的特点表现的越明显。3软件介绍3.1 软件概述MATLAB是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks公司出品的商业数学软件,主要包括MATLAB和Simulink两大部分。MATLAB主要面对科学计算、可视化以及交互式程序设计
12、的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言的编辑模式,代表了当今国际科学计算软件的先进水平。MATLAB在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。 MATLAB的基本数据单位是矩阵,它的指令
13、表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C、FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。用户可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。 3.2界面基本操作1启动 MATLAB双击桌面上的MATLAB快捷方式或选择程序菜单中的MATLAB选项,即可进入。启动打开界面如图3-1所示:图3-1 MATLAB启动界面2工作环境界面打开界面后,产生的工作环境界
14、面如图3-2所示,它包含一个工作栏、三个区域、四个工作窗口。其中四个工作窗口分别为指令窗口(Command Windows)、指令历史窗口(Command history)、工作空间窗口(workspace)和当前路径窗口(current directory)。图3-2 MATLAB默认的用户界面MATLAB的指令窗口(Command Windows)如图3-3所示,是用户与MATLAB交互的工具。MATLAB的功能是通过大量的函数或者指令来实现的,这些函数有些可以通过MATLAB的图形用户界面直接使用,而大多数函数是通过MATLAB的指令窗口,用户直接键入相应的函数或命令来调用。图3-3 M
15、ATLAB的指令窗口MATLAB指令历史窗口(Command history)如图3-4所示,主要记录了在MATLAB窗口中输入的所有指令,还可以被再次执行。它们不仅可以能够复制到MATLAB的指令窗口,还可以通过这些指令的记录直接创建M文件。图3-4 MATLAB的指令历史窗MATLAB中工作区间(workspace)如图3-5所示,是运行MATLAB的函数或指令所生成的所有变量和MATLAB常量构成的空间。工作空间和指令窗口的区别是,指令窗口是一个实体,是用户输入函数和程序的一个窗体,大多数变量是通过这个窗体产生的,保留了指令窗口运行的所有变量。工作区间窗口是显示目前保存在内存中的MATL
16、AB的数字结构、字节数、变量名,以及类型的窗口。图3-5 MATLAB的工作空间窗口可以在指令窗口中执行pathtool,或者在MATLAB桌面、指令窗的菜单中选择File|Path打开路径设置对话框,即当前路径(current directory)窗。其主要作用是帮助用户组织管理当前路径下的M文件,并且通过该工具,能够运行、编辑相应的文件,加载MATLAB数据文件等,这些操作都可以通过对应的右键快捷菜单完成。M文件编译/调制窗是一个集编译和调试两种功能于一体的工作环境。如果一个程序稍复杂一些,则需要采用文件方式,把程序写成一个由多条语句构成的文件,就需要用到文本编译器。在MATLAB文本编译
17、器窗口中建立的文件默认为.m文件,如图3-6所示。图3-6 MATLAB的M文件窗口3.3 MATLAB主要特点(1)语言简洁紧凑,使用方便灵活,库函数极其丰富。(2)运算符丰富。(3)具有结构化的控制语句(如for循环、break 语句和if 语句)和面向对象编程的特性。(4)语法限制不严格,程序设计自由度大。(5)图形功能强大。(6)功能强大的工具箱。(7)源程序的开放性。4 MATLAB程序实现4.1程序流程图本设计程序共包括五部分:读取原图,通过调用子程序实现的自行编写FFT程序,通过调用子程序实现的自行编写IFFT程序,系统FFT程序,系统IFFT程序。具体程序流程图如图4-1所示:
18、开始输出原始图像自行编写的FFT变换自行编写的IFFT变换系统FFT变换系统IFFT变换自行编写的FFT变换子程序自行编写的IFFT变换子程序结束图4-1 程序流程图从流程图可以看出此程序通过分模块实现了设计任务。4.2程序分析4.2.1 原始图像程序及分析实现读取原始图像并且显示出来的程序段如下:filename,pathname=uigetfile(*.jpg;*.bmp;*.gif,File Selector);image=imread(strcat(pathname,filename);scrsz=get(0,ScreenSize);figure(position,0 0 scrsz(
19、3)-1 scrsz(4);set(gef,Name,快速傅立叶变换);subplot(2,4,1);imshow(image);title(原始图像);MATLAB处理结果如图4-2所示:图4-2 原始图像4.2.2 灰度图像程序及分析实现原始图像变成灰度图像并且显示出来的程序段如下:if ndims(image)=3image=rgb2gray(image);endscrsz=get(0,ScreenSize);%figure(position,0 0 scrsz(3)-1 scrsz(4);set(gef,Name,快速傅立叶变换);subplot(2,4,2);imshow(image
20、);title(灰度图像);subplot(2,4,6);imshow(image);title(灰度图像);MATLAB处理结果如图4-3所示:图4-3 灰度图像4.2.3自建的FFT程序及分析利用自编的FFT算法实现对灰度图像处理的程序段如下:array=transform_fft2(array);Ft=fftshift(array);S1=log(1+abs(Ft);axes(handles.axes3);imshow(S1,);tltle(自建FFT2函数结果);MATLAB处理结果如图4-4所示:图4-4 自建FFT2结果4.2.4自建的IFFT程序及分析利用自编的IFFT算法实现对
21、灰度图像处理的程序段如下:array=transform_ifft2(array);array=abs(array);array=array(1:r,1:c);axes(handles.axes4);imshow(array,);title(自建IFFT2结果);MATLAB处理结果如图4-5所示:图4-5 自建IFFT2结果4.2.5内置的FFT程序及分析利用MATLAB自带的FFT算法实现对灰度图像处理的程序如下:F=fft2(image);FC=fftshift(F);S=log(1+abs(FC);axes(handles.axes7);imshow(S,);tltle(内置FFT2结
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字信号 处理 课程设计 基于 MATLAB FFT 算法 设计
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-4131901.html