数字信号处理课程设计-基于MATLAB的FFT算法的设计

上传人:pu****.1 文档编号:490151807 上传时间:2024-03-01 格式:DOC 页数:35 大小:1.05MB
返回 下载 相关 举报
数字信号处理课程设计-基于MATLAB的FFT算法的设计_第1页
第1页 / 共35页
数字信号处理课程设计-基于MATLAB的FFT算法的设计_第2页
第2页 / 共35页
数字信号处理课程设计-基于MATLAB的FFT算法的设计_第3页
第3页 / 共35页
数字信号处理课程设计-基于MATLAB的FFT算法的设计_第4页
第4页 / 共35页
数字信号处理课程设计-基于MATLAB的FFT算法的设计_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《数字信号处理课程设计-基于MATLAB的FFT算法的设计》由会员分享,可在线阅读,更多相关《数字信号处理课程设计-基于MATLAB的FFT算法的设计(35页珍藏版)》请在金锄头文库上搜索。

1、唐 山 学 院 数字信号处理 课 程 设 计题 目 基于MATLAB的FFT算法的设计 系 (部) 智能与信息工程学院 班 级 13电信本1班 姓 名 学 号 指导教师 2021 年 2 月 29 日至 3 月 11 日 共 2 周2021年 3 月 11 日目 录1 引言12 设计任务和原理2设计任务2设计原理23软件介绍5软件概述5界面根本操作53.3 MATLAB主要特点84 MATLAB程序实现99程序分析9原始图像程序及分析9灰度图像程序及分析10自建的FFT程序及分析11自建的IFFT程序及分析12内置的FFT程序及分析12内置的IFFT程序及分析13程序运行结果13144.5 I

2、FFT结果与原灰度图形及比拟155 GUI界面165.1 GUI简介16界面设计16运行调试196总结体会20参考文献21附录 FFT算法的程序22附录 GUI设计的程序261 引言数字信号处理Digital Signal Processing,DSP是一门涉及许多学科而又广泛应用于许多领域的新兴学科,是一种通过使用数学技巧执行转换或提取信息,来处理显示信号的方法,这些信号由数字序列表示。随着信息时代,数字时代的到来,数字信号处理已经成为一门极其重要的学科和技术领域。以DSP为核心芯片的处理系统日益变成了数字信号处理系统的主流。它广泛用于电子信息、通信、图像处理、语音处理、生物医学、自动控制、

3、地质探测等领域,受到工程设计和使用人员的青睐。FFTFast Fourier Transformation,即为快速傅立叶变换,是离散傅立叶变换的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改良获得的。它对傅氏变换的理论并没有新的发现,但是对于在计算机系统或者说数字系统中应用离散傅立叶变换,可以说是进了一大步,在实际应用中,FFT是最常见的数字信号处理算法,它在各种数字信号处理系统中扮演重要的角色。在信号处理过程中。频域分析往往比时域分析方便和高效,FFT是时域和频域转换的根本运算。正是鉴于DFT极为复杂的时间复杂度,1965年和巧妙的利用WN因子的周期性和

4、对称性,提出了一个DFT的快速算法,即快速傅立叶变换FFT,从而使得DFT在信号处理中才得到真正的广泛应用。DFT是一种应用广泛的数学变换工具,MATLAB是一款功能强大的科学计算语言。MATLAB提供的FFT函数解决了DFT的快速计算问题,但由于它是内建函数而不能了解到软件实现的过程。本文以按时间抽取的基2FFT算法为例,根据快速傅立叶变换的原理和规律,绘出了算法实现的程序框图,列出了MATLAB环境下软件实现的程序,建立了从算法理论到程序实现的完整概念。在信号处理中,DFT离散傅立叶变换的计算具有举足轻重的地位。但是基于其复杂的计算,直接应用起来十分麻烦,基于此,本文利用MATLAB软件对

5、有限长度信号的DFT进行改良,提出FFT快速傅立叶变换,并利用FFT对所给连续时间和离散时间信号做了频谱分析。图像信号的处理主要是用MATLAB作为工具平台,设计中涉及到图像的选取、存储和读取、灰度处理、FFT变换、IFFT变换、频谱分析。通过数字信号处理课程的理论知识的综合运用,以及选做系统人机对话界面,用GUI界面完成人机交互使用,从实践上初步实现对数字信号的处理。2 设计任务和原理设计任务所设计的FFT算法应完成以下功能:(1)在MATLAB环境下编写FFT算法不调用系统现有函数;(2)实现对选定图片进行FFT计算、复原IFFT计算,并与系统FFT函数做比照,进行分析;(3)设计GUI界

6、面。设计要求:1.根据题目要求进行算法GUI总体设计。 2.完成算法具体局部的设计。(1)算法原理图。(2)算法原理说明。3.算法程序的设计。(1)对选定图片进行自编FFT计算与复原,并与自带函数进行比照;(2)完整源程序。2.2 设计原理对于有限长序列x(n),假设要求其N点的傅里叶变换(DFT)需要经过次复数乘法运算和N*(N-1)次复数加法运算。随着N的增加,运算量将急剧增加,而在实际问题中,N往往是较大的,如当N=1024时,完成复数乘法和复数加法的次数分别为百万以上,无论是用通用计算机还是用DSP芯片,都需要消耗大量的时间和机器内存,不能满足实时的要求。因此,DFT的这种运算只能进行

7、理论上的计算,不适合对实时处理要求高的场合。因此,研究作为DSP的快速算法的FFT是相当必要的,快速傅里叶变换(FFT)是为提高DFT运算速度而采用的一种算法,快速算法的种类很多,而且目前仍在改良和提高,它是根据离散傅里叶变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改良获得的。基于本学期所学的DIT-FFT的运算规律和编程思想以及MATLAB的学习和使用,本课设要求在MATLAB环境下编写基-2DIT-FFT算法实现对离散信号的快速傅里叶变换,再与MATLAB软件自带的FFT函数实现对离散信号的傅里叶变换进行比拟,如果得到的频谱相同,那么我们编写的程序就是正确的。其中离散信号是自己选

8、取的图像信号,用MATLAB处理得到频谱图以及选用系统人机对话界面,用GUI界面完成人机交互。快速傅立叶变换FFT是为提高DFT运算速度而采用的一种算法。对一个有限长度序列的N点的DFT为:所以,要求N点的DFT,需N2的复数乘法运算,次复数乘法运算。随着N的增加,运算量将急剧增加,而在实际问题中,N往往是较大的,如当N=1024时,完成复数乘法和复数加法的次数分别为百万以上,无论是用通用计算机还是用DSP芯片,都需要消耗大量的时间,不能满足事实的要求,不适合对实时处理要求高的场合。为了能实时处理DFT,要想减少DFT的运算量可以有两个途径:一是降N,N的值减小了,运算量就减少了;第二是利用旋

9、转因子的周期性,对称性和可约性。利用这两个途径实现DFT的快速傅立叶变换FFT,FFT算法根本上可分为按时间抽取的FFT算法FFT和按频率抽取的FFT算法FFT。旋转因子的性质:周期性 共轭对称性 可约性 , 本次课设要求用基2的按时间抽取的FFT算法DIT-FFT实现FFT功能,设序列想xn的长度为N,且N满足N=2M,M为正整数。假设N不能满足上述关系,可以将序列x(n)补零实现。按时间抽取基2-FFT算法的根本思路是将N点序列按时间下标的奇偶分为两个N/2点序列,计算这两个N/2点序列的N/2点DFT,计算量可减少一半;每一个N/2点序列按照同样的划分原那么,可以划分为两个N/4点序列,

10、最后,将原序列划分为多个2点序列,将计算量大大降低。按时间下标的奇偶将N点x(n)分别抽取组成两个N/2点序列,分别记为x1(n)和x2(n),将的DFT转化为x1(n)和x2(n)的DFT的计算。利用旋转因子的可约性,即:用蝶形运算可表示为如图2-1所示:图2-1 DIT-FFT蝶形运算流图符号以此类推,还可以按n值的奇偶分为两个序列,这样就到达了降N的目的,从而减少了运算量。FFT和DFT的数学运算量改良。直接采用DFT进行运算,运算量为次复数乘法和次复数乘法。当采用M次FFT时,由求得,运算流图有M级蝶形,每一级都由N/2个蝶形运算构成,这样每一级蝶形运算都需要N/2次复数乘法和N次复数

11、加法。M级运算共需要复数乘法次数为,复数加法次数为。当N值较大时,FFT减少运算量的特点表现的越明显。3软件介绍3.1 软件概述MATLAB是矩阵实验室Matrix Laboratory的简称,是美国MathWorks公司出品的商业数学软件,主要包括MATLAB和Simulink两大局部。MATLAB主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计

12、语言的编辑模式,代表了当今国际科学计算软件的先进水平。MATLAB在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创立用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。 MATLAB的根本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C、FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。用户可以直接调用,用户也可以将自己编写的实用程序

13、导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。 界面根本操作1启动 MATLAB双击桌面上的MATLAB快捷方式或选择程序菜单中的MATLAB选项,即可进入。启动翻开界面如图3-1所示:图3-1 MATLAB启动界面2工作环境界面翻开界面后,产生的工作环境界面如图3-2所示,它包含一个工作栏、三个区域、四个工作窗口。其中四个工作窗口分别为指令窗口Command Windows、指令历史窗口Command history、工作空间窗口workspace和当前路径窗口current directory。图3-2 MAT

14、LAB默认的用户界面MATLAB的指令窗口Command Windows如图3-3所示,是用户与MATLAB交互的工具。MATLAB的功能是通过大量的函数或者指令来实现的,这些函数有些可以通过MATLAB的图形用户界面直接使用,而大多数函数是通过MATLAB的指令窗口,用户直接键入相应的函数或命令来调用。图3-3 MATLAB的指令窗口MATLAB指令历史窗口Command history如图3-4所示,主要记录了在MATLAB窗口中输入的所有指令,还可以被再次执行。它们不仅可以能够复制到MATLAB的指令窗口,还可以通过这些指令的记录直接创立M文件。图3-4 MATLAB的指令历史窗MATLAB中工作区间workspace如图3-5所示,是运行MATLAB的函数或指令所生成的所有变量和MATLAB常量构成的空间。工作空间和指令窗口的区别是,指令窗口是一个实体,是用户输入函数和程序的一个窗体,大多数变量是通过这个窗体产生的,保存了指令窗口运行的所有变量。工作区间窗口是显示目前保存在内存中的MATLAB的数字结构、字节数、变量名,以及类型的窗口。图3-5 MATLAB的工作空间窗口可以在指令窗口中执行pathtool,或者在MATLAB桌面、指令窗的菜单中

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

当前位置:首页 > 商业/管理/HR > 商业计划书

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