基于matlab的图像分析

合集下载

在Matlab中进行图像配准和形变分析

在Matlab中进行图像配准和形变分析

在Matlab中进行图像配准和形变分析图像配准是计算机视觉和医学影像处理中的一个重要技术,它用于对多个图像进行比较、分析和匹配。

图像形变分析则是对配准后的图像进行进一步分析,得到图像中的形变信息。

在Matlab中,有多种方法可以实现图像配准和形变分析,下面将介绍一些常用的方法及其应用。

一、基础知识在进行图像配准和形变分析之前,需要了解图像的基本概念和表示方式。

在Matlab中,图像通常表示为一个矩阵,每个元素代表图像中某个像素的灰度值或颜色值。

图像配准的目标是将两幅或多幅图像进行对齐,使它们在空间上完全或部分重叠。

为了实现配准,需要找到两个图像之间的几何变换关系。

常见的几何变换包括平移、旋转、缩放和仿射变换。

形变分析是对配准后的图像进行进一步分析,得到图像中的形变信息。

形变可以分为刚体形变和非刚体形变。

刚体形变是指图像中的物体保持形状和大小不变,只发生位置上的改变;非刚体形变是指图像中的物体发生形状和大小的改变。

二、图像配准方法1. 特征点匹配法特征点匹配是一种常用的图像配准方法。

它通过在图像中提取出一些显著的特征点,如角点和边缘点,然后在不同图像之间进行特征点的匹配,从而得到两个图像之间的几何变换关系。

在Matlab中,可以使用SURF算法(加速稳健特征)来提取特征点,并使用RANSAC算法(随机抽样一致性)来进行特征点的匹配。

通过这种方法,可以实现较好的图像配准效果。

2. 互信息法互信息是一种在图像配准中常用的相似性度量方法。

它通过计算两个图像间的信息增益来评估它们的相似性。

在Matlab中,可以使用imregister函数来实现基于互信息的图像配准。

3. 形状上下文法形状上下文是一种用于描述和匹配不同形状的方法。

在图像配准中,可以使用形状上下文来描述图像中的特征点,并基于形状上下文的距离度量来进行特征点的匹配。

在Matlab中,可以使用shape_context函数来实现形状上下文法。

三、图像形变分析方法1. 网格形变法网格形变是一种常用的图像形变分析方法。

基于MATLAB GUI图像处理系统的设计与实现

基于MATLAB GUI图像处理系统的设计与实现

基于MATLAB GUI图像处理系统的设计与实现本文将介绍一个基于MATLAB GUI的图像处理系统的设计和实现。

该系统提供了一系列常用的图像处理功能,包括图像滤波、边缘检测、图像变换、形态学处理、颜色空间转换等。

通过该系统,用户可以方便地对图像进行处理和分析。

首先,需要创建一个MATLAB GUI窗口,用于显示图像和进行图像处理。

接着,通过调用MATLAB内置的图像处理函数来实现各种功能。

下面是一些常用功能的实现方法:1.图像读取:使用imread函数来读取图像文件,并在GUI窗口中显示。

2.图像滤波:使用imfilter函数来实现各种滤波器,如高斯滤波、中值滤波等。

3.边缘检测:使用边缘检测算法(如Sobel算子、Canny算法等)来提取图像中的边缘信息。

4.图像变换:使用imresize函数来改变图像的大小,使用imrotate函数来旋转图像等。

5.形态学处理:使用imopen、imclose等形态学处理函数来对图像进行形态学分析和处理。

6.颜色空间转换:使用rgb2gray、rgb2hsv等函数来进行颜色空间的转换。

在实现这些功能时,可以使用MATLAB的图像处理工具箱中的函数,也可以自己编写函数来实现特定的处理功能。

除了提供以上的基本功能,该系统还可以通过添加菜单栏、工具栏等交互元素,以增强用户体验。

例如,添加一个“保存”菜单项,使用户可以将处理后的图像保存到本地,或添加一个“撤销”按钮,使用户可以取消上一次的处理操作等。

总之,通过将MATLAB GUI和图像处理技术相结合,我们可以很方便地开发出一个图像处理系统,并提供常用的功能和交互元素,使用户可以快速地对图像进行处理和分析。

同时,我们也可以根据实际需要,自行扩展和改进该系统,以适应更加复杂的图像处理应用场景。

基于Matlab小波工具箱的数字图像处理及小波分析

基于Matlab小波工具箱的数字图像处理及小波分析

k k ,2/)]2(t ψ1+⊃j j V V图2.2 Mallat重构示意图三、常用小波函数介绍在小波分析理论在数学和工程领域中一个很重要的问题就是小波基的选择,选择一个最优的小波基,可以使图像处理更加优化。

在小波分析理论中有很多种的小波函数,下面介绍一些常用的小波基函数:3.1 Haar小波Haar小波是Haar于1990年提出的一种正交小波,它是小波理论分析发展过程中最早用到的的小波。

Haar小波是由一组互相正交归一的函数集,即Haar函数衍生产生的,是具有紧支撑的正交小波函数,其定义如下[5]:1012()1121tt tψ≤≤⎧⎪=-≤≤⎨⎪⎩其他(3.1)Haar小波是一个最简单的时域不连续的小波,它类似一个阶梯函数,由于它的紧支撑性和正交性,使得Haar小波的应用很普遍。

图3-1所示为Haar波的函数图像。

图3-1 Haar小波函数图像由于Haar小波在时域上是不连续的,所以作为基本小波性能不是特别好。

但也有自己的优点:①计算简单;②在2ja=的多分辨率系统中Haar小波构成一组最简单的正交归一的小波族。

因为()tψ不但与(2),()j t j Zψ∈正交,而且与自己的整数位移正交。

③()tψ的傅里叶变换是:24()sin()2j e jaψΩΩ=-ΩΩ(3.2)3.2Mexican hat(墨西哥草帽)小波Mexican Hat 小波又被称Marr 小波。

Marr 小波函数就是高斯函数的二阶导数,其表达式为:222()(1)t t t e ψ-=- (3.3)222()2e ωψωπω= (3.4)因为它的形状像墨西哥帽的截面,所以也称为墨西哥帽函数。

墨西哥帽函数在时间域与频率域都有很好的局部化,并且满足0)(=⎰∞∞-dx x ψ (3.5)由于它的尺度函数不存在,所以不具有正交性。

其波形如图3-2所示。

Marr 小波的时域、频域都有很好的局部特性,但由于它的正交性尺度函数不存在,所以不具有正交性,主要用于信号处理和边缘检测。

浅析基于MATLAB的图像分割方法

浅析基于MATLAB的图像分割方法

像 中要提取 的 目标 物 与其背 景在灰 度特 性上 的差异 ,通过
设 置 合 适 的 灰 度 门 限 ( 值 ) 将 图 像 的 灰 度 划 分 为 两 个 或 阈 , 多个 灰 度 区 间 , 以确 定 有 意 义 的 区 域 或 分 割 物 体 的边 界 。 阈 值 分 割 常 用 于 图像 的 二 值 化 处 理 , 选 择 一 个 合 适 的 阈值 , 即 通 过 判 断 图像 中 的 每 一 个 像 素 点 的 特 征 属 性 是 否 满 足 阂 值
绍, 重点对 边缘检 测技 术的几 种常用 算 子进行 比较分 析 , 并 通 过 MAT AB 数 字 图 像 处 理 工 具 编 程 实 现 基 于 各 算 子 的 L
边缘 检测 。
2 .基 于 阈 值 的 图像 分 割 阈 值 分 割 『 一 种 常 用 的 图 像 分 割 方 法 , 主 要 利 用 图 2 1 是 它
阈值 分 割 。
对 于 图像 函数 r ,)它 在像 素 点( ,) 的梯 度 是一 ( y, x xy处
个矢量 , 义为: 定
Gx) [ ] E’=票 fy (]
梯度有 两个重要特性 : () 度 的方 向 为 函 数 f ,) 大 变 化 率 的 方 向 ; 1梯 ( Y最 x
划分成若 干个这样 的有意义 区域 的过程 , 各区域是具有 相近
特 性 的像 素 的连 通 集 合 。
始 区域 , 根据给定 的均 匀性检测准 则进行分裂 和合并这些 区
域 , 步 改 善 区 域 划 分 的 性 能 , 至 最 后 将 图 像 分 成 数 量 最 逐 直 少 的均匀区域 为止。 4 .基 于 边 缘 检 测 的 图 像 分 割 及 算 子 分 析 边 缘 是 指 图 像 中像 素 灰 度 值 或 色 彩 等 属 性 有 突 变 的 像 素 的集 合 , 存 在 于 目标 与 背 景 、 它 目标 与 目标 之 间 , 含 了丰 包 富 的 图 像 信 息 。基 于 边 缘 检 测 [ 图 像 分 割 正 是利 用 边 缘 的 2 ] 的 灰 度 变 化 特 性 , 过 考 察 图 像 中各 像 素 在 某 个 邻 域 内 灰 度 的 通

基于Matlab-GUI的衍射图像分析

基于Matlab-GUI的衍射图像分析
Ab t a t s r c An lsn i r ci n i g sh sg e ts n f a c o te r s ac fmat r smir s u tr , n h u lt o e df a t n a y i g df a t ma e a r a i i c n e t h e e r h o t ’ e o t c u e a d t e q ai ft i r c i f o g i e r y h f o
The p i cp e o h o r e r is i e a e, a e, o e so hee pe i n o ehe t h n lssr s t r n r d c d i h a e . t rn il ft e c u s wa e,t ntr c us g pr c s ft x rme ttg t rwih t e a ay i e ulsa e ito u e n t e p p r I f
i g sh sd r c ea in t h e a i f h e e r h I h sp p r h i r c in i g n lss i r aie t t b GUI r ga ma e a i t lt t e v rc t o er s ac . n t i a e e df a t e r o o y t t f o ma e a a y i s e l d wi Ma l — s h a o rmmi g p n.
t e rtc lo e . h oe ia n s
Ke wo ds y r
Df a t n I g n lss Malh G a hc lue nerc GUI irci maea ay i f o t rp ia sritra e( a )

基于matlab毕业设计题目

基于matlab毕业设计题目

基于Matlab的毕业设计题目:基于Matlab的图像处理与识别系统设计一、题目背景图像处理与识别是计算机视觉领域的重要应用,Matlab作为一种强大的数学软件,提供了丰富的图像处理工具箱,使得图像处理与识别变得更加容易。

本毕业设计旨在利用Matlab 实现一个基于图像处理的毕业设计项目,通过对图像进行预处理、特征提取和分类识别,实现对图像的自动识别。

二、设计目标1. 对输入的图像进行预处理,包括去噪、增强等操作,提高图像质量。

2. 利用Matlab提供的图像特征提取方法,提取出图像中的关键特征,如边缘、纹理等。

3. 实现基于分类器的图像识别系统,能够根据特征分类并识别出不同的图像。

4. 评估系统性能,通过对比实验和分析,验证系统的准确性和稳定性。

三、设计思路1. 采集不同类型和背景的图像数据集,包括待识别图像和参考图像。

2. 对采集到的图像进行预处理,包括去噪、增强等操作,提取出有用的特征。

3. 利用Matlab提供的图像特征提取方法,如边缘检测、纹理分析等,提取出关键特征。

4. 根据提取的特征,设计分类器,实现图像的自动识别。

5. 对系统性能进行评估,包括准确率、召回率、F1得分等指标。

四、技术实现1. 使用Matlab的图像处理工具箱对图像进行预处理,包括灰度化、去噪、增强等操作。

2. 利用Matlab的滤波器对图像进行边缘检测,如Sobel滤波器、Canny滤波器等。

3. 使用纹理分析方法对图像进行纹理特征提取,如灰度共生矩阵等方法。

4. 根据提取的特征,设计分类器,如支持向量机(SVM)、神经网络等。

5. 使用Matlab的优化工具箱对分类器进行训练和优化,提高分类器的准确率和稳定性。

五、实验结果与分析1. 实验数据集:采集不同类型和背景的图像数据集,包括待识别图像和参考图像。

实验数据集需要涵盖多种场景和类别,如人脸识别、手势识别、交通标志识别等。

2. 实验结果:对不同类型和背景的图像进行测试,验证系统的准确性和稳定性。

如何使用MATLAB进行医学图像处理与分析

如何使用MATLAB进行医学图像处理与分析

如何使用MATLAB进行医学图像处理与分析医学图像处理与分析在医学领域具有重要的应用价值,可以帮助医生更准确地进行病症诊断、手术规划和治疗评估。

MATLAB作为一种强大的科学计算软件,提供了丰富的图像处理和分析工具,被广泛应用在医学图像处理领域。

本文将介绍如何使用MATLAB进行医学图像处理与分析,并提供一些实际案例和技巧供读者参考。

一、图像预处理医学图像预处理是医学图像处理的第一步,旨在消除图像中的噪声、增强感兴趣区域的对比度和清晰度。

MATLAB提供了一系列的图像滤波和增强函数,可以帮助我们实现这些预处理操作。

例如,可以使用MATLAB中的medfilt2函数对医学图像进行中值滤波,以去除图像中的椒盐噪声。

另外,imadjust函数可以根据图像的像素值分布调整图像的对比度,以提高图像的可视化效果。

二、图像分割图像分割是将医学图像中不同的组织结构或对象分离出来的过程,它为后续的图像分析和特征提取提供了基础。

MATLAB提供了多种图像分割算法和函数,如阈值分割、边缘检测和基于区域生长的分割等。

以阈值分割为例,MATLAB中的graythresh函数可以自动计算图像的合适阈值,然后可以通过imbinarize函数将图像二值化。

此外,可以使用activecontour函数来实现基于边缘的图像分割,通过调节参数和迭代次数,可以得到满意的分割结果。

三、特征提取和分析对医学图像进行特征提取和分析可以帮助医生定量地评估和诊断病变。

MATLAB提供了许多强大的函数和工具箱,用于提取医学图像的形状、纹理、灰度等特征,并进行统计分析和可视化展示。

以形状特征提取为例,MATLAB中的regionprops函数可用于计算二值化图像中每个连通区域的面积、周长、中心位置等形状特征。

另外,可以利用graycomatrix函数计算医学图像的纹理特征,如能量、对比度、熵等。

通过提取这些特征并与其他临床信息结合,可以对病变进行可靠的识别和分类。

在Matlab中使用模糊C均值聚类进行图像分析的技巧

在Matlab中使用模糊C均值聚类进行图像分析的技巧

在Matlab中使用模糊C均值聚类进行图像分析的技巧在图像分析领域,模糊C均值聚类(FCM)是一种常用的工具,它可以帮助我们发现图像中隐藏的信息和模式。

通过使用Matlab中的模糊逻辑工具箱,我们可以轻松地实现FCM算法,并进行图像分析。

本文将介绍在Matlab中使用FCM进行图像分析的技巧。

首先,让我们简要了解一下FCM算法。

FCM是一种基于聚类的图像分割方法,它将图像的像素分为不同的聚类,每个聚类代表一类像素。

与传统的C均值聚类算法不同,FCM允许像素属于多个聚类,因此能够更好地处理图像中的模糊边界。

在Matlab中使用FCM进行图像分析的第一步是加载图像。

可以使用imread函数将图像加载到Matlab的工作区中。

例如,我们可以加载一张名为“image.jpg”的图像:```matlabimage = imread('image.jpg');```加载图像后,可以使用imshow函数显示图像。

这可以帮助我们对图像有一个直观的了解:```matlabimshow(image);```接下来,我们需要将图像转换为灰度图像。

这是因为FCM算法通常用于灰度图像分析。

可以使用rgb2gray函数将彩色图像转换为灰度图像:```matlabgrayImage = rgb2gray(image);```在使用FCM算法之前,我们需要对图像进行预处理。

预处理的目的是消除图像中的噪声和不必要的细节,从而更好地提取图像中的特征。

常用的图像预处理方法包括平滑、锐化和边缘检测等。

Matlab中提供了许多图像预处理函数。

例如,可以使用imnoise函数向图像中添加高斯噪声:```matlabnoisyImage = imnoise(grayImage, 'gaussian', 0, 0.01);```还可以使用imfilter函数对图像进行平滑处理。

常见的平滑方法包括均值滤波和高斯滤波:```matlabsmoothImage = imfilter(noisyImage, fspecial('average', 3));```一旦完成预处理步骤,我们就可以使用模糊逻辑工具箱中的fcm函数执行FCM算法。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录1 引言 (1)2 基于MATLAB的FFT算法实现 (2)2.1系统总体流程图 (2)2.2 FFT运算规律及编程思想 (2)2.2.1图像信号的采集 (2)2.2.2 DIT-FFT算法的基本原理 (3)2.2.3 FFT算法的运算规律及编程思想 (5)3 Matlab程序实现 (7)3.1程序运行结果 (7)3.2对比结果分析 (8)4 系统人机对话界面 (9)4.1 GUI简介 (9)4.2 界面设计 (9)4.3 运行调试 (10)5 Matlab软件简介 (11)6 心得体会 (12)参考文献 (13)附录Ⅰ (14)附录Ⅱ (18)1 引言MATLAB是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks 公司出品的商数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。

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

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

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

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

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

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

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

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

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

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

本次课程设计是实现对选定图片进行FFT计算、还原(IFFT计算),并与系统FFT函数做对比,进行分析。

如果有能力可以选做系统人机对话界面。

用GUI界面完成人机交互方便使用的。

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

2 基于MATLAB的FFT算法实现2.1系统总体流程图本设计要求找到一张明暗对比较大的图片;在Matlab环境下编写基FFT算法;利用自己编写的算法对已选择的图片信号进行计算,并显示出计算的结果,将计算的结果与Matlab数字信号处理工具箱中自带的fft函数进行对比研究,验证自编算法的正确性。

系统的总体设计流程图如图2-1所示:图2-1 系统的总体设计流程图2.2 FFT运算规律及编程思想2.2.1图像信号的采集图像信号最好采用明暗对比比较大的灰度图像进行分析,这样实验结果对比比较明显。

在Matlab中用语句:[filename, pathname]=uigetfile({'*.jpg;*.tif;*.bmp;*.gif' },'File Selector');image=imread(strcat(pathname,filename));用于读取图片的信号,Matlab 图像分析支持多种格式的图像信号,用上述语句时,在Matlab 中分析图像的时候可以系统自动检索所需分析的图片。

语句:image=rgb2gray(image);可以对图像进行灰度处理。

当我们要将图片显示出来的的时候只需要用语句: imshow(image);本次课程设计就是分析灰度图像。

通过用两种不同的方法对灰度图像的FFT 计算和IFFT 计算,来得到我们想要的结果。

采集到图像信号之后,就可以对图像信号进行分析和计算了。

2.2.2 DIT-FFT 算法的基本原理快速傅里叶变换(FFT )是为提高DFT 运算速度而采用的一种算法。

对一个有限长度序列x(n)的N 点的DFT 为:所以,要求N 点的DFT,需要N2次的复数乘法运算,N*(N-1)次复数乘法运算算。

随着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 满足N=2M,M 为正整数。

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

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

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

利用旋转因子的可约性,即:用蝶形运算可表示为如图2-2所示:以此类推,还可以把x1(n)和x2(n)按n值得奇偶分为两个序列,这样就达到了降N得目的,从而减少了运算量。

FFT对DFT的数学运算量改进:直接采用DFT进行计算,运算量为N2次复数乘法和N*(N-1)次复数乘法。

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

M级运算共需要复数乘法次数为C=N/2*M,复数加法次数为C=N*M。

()()()()()()()()()()1N21N N0,2,4...1,3,5...1122212N N0,10,111222121N2N0,10,1221NnknN Nnk nkn nN Nr krkr rN Nr krkr rX k x n Wx n W x n Wx r W x r Wx r W x r W-=--==--+==--+====+=++=+∑∑∑∑∑∑∑2j2j2222e erkNrkrk rkNN NW Wππ--===()()()112212220012,01N Nrk k rkN N Nr rkNX k x r W W x r WX k W X k N--===+=+≤≤-∑∑()(k)图2-2 DIT-FFT蝶形运算流图符号12,,1,0,)()12()()2(21-=⎭⎬⎫=+=Nrrxrxrxrx当N 值较大时,FFT 减少运算量的特点表现的越明显。

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

1. 原位计算对MN 2=点的FFT 共进行M 级运算,每级由N/2个蝶形运算组成。

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

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

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

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

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

第R 个旋转因子的指数R P L M -=2,旋转因子指数为P 的第一个蝶的第一节点标号k 从R 开始,由于本级中旋转因子指数相同的蝶共有L M -2个,且这些蝶的相邻间距为L 2,故旋转因子指数为P 的最后一个蝶的第一节点标号k 为:R N R L L L M +-=+⋅--22)12(,本级中各蝶的第二个节点与第一个节点都相距B 点。

应用原位计算,蝶形运算可表示成如下形式:L A (J)= 1-L A (J)+ 1-L A (J+B)* PN WL A (J+B)= 1-L A (J)-1-L A (J+B)* PN W总结上述运算规律,可采用如下运算方法进行DIT-FFT 运算。

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

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

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

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

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

相关文档
最新文档