快速傅里叶变换
快速傅里叶变换FFT

本章主要内容
▪ 引言 ▪ 基2FFT算法 ▪ 进一步降低运算量旳措施
4.1 引言
▪ DFT是信号分析与处理中旳一种主要变换。但直接计算DFT旳 计算量与变换区间长度N旳平方成正比,当N较大时,计算量 太大,直接用DFT算法进行谱分析和信号旳实时处理是不切 实际旳。
▪ 1965年发觉了DFT旳一种迅速算法,使DFT旳运算效率提升1-2 个数量级,为数字信号处理技术应用于多种信号旳实时处理 发明了条件,推动了数字处理技术旳发展。
r 0
x2 ( r )WN2 kr
X (k) x(n)WNkn x(n)WNkn
n
n
X(k) x(n)WNkn x(n)WNkn
n
n
X (k )
x(n)WNkn
x(n)WNkn
N / 21
N / 21
N / 21
N / 21
n
n
x(2r)WN2kr
x(2r 1)WNk(2r1) x(2r)WN2kr x(2r1)WNk(2r1)
4.2 基2FFT算法
2.旋转因子旳变化规律
N点DIT―FFT运算流图中,每个蝶形都要乘以旋转因子WpN,p 称为旋转因子旳指数。N=8 =23 时各级旳旋转因子
第一级:L=1, 有1个旋转因子:WNp =WN/4J =W2LJ J=0 第二级:L=2,有2个旋转因子:WNp =WN/2J =W2LJ J=0,1 第三级:L=3,有4个旋转因子:WNp =WNJ =W2LJ J=0,1,2,3 对于N=2M 旳一般情况,第L级共有2L-1个不同旳旋转因子:
▪ 1984年,提出了分裂基迅速算法,使运算效率进一步提升;
4.2 基2FFT算法
数字信号处理课件第4章快速傅里叶变换FF

通过FFT对雷达信号进行频谱分析,实现雷 达数据的压缩,减小存储空间和传输带宽。
谢谢聆听
05 FFT的局限性与挑战
浮点运算的开销问题
浮点运算开销
快速傅里叶变换(FFT)算法在实 现过程中需要进行大量的浮点运 算,这可能导致计算成本较高, 尤其是在处理大规模数据时。
硬件资源需求
由于FFT的浮点运算密集特性,对 计算设备的硬件资源(如CPU、 GPU等)要求较高,需要具备高 性能的计算能力。
FFT的软件实现
C/C实现
01
使用C或C等通用编程语言实现FFT算法,具有较好的通用性和
可移植性。
优化编译器
02
利用现代编译器的优化功能,如向量化、内联等,可以提高软
件实现的计算速度。
并行计算框架
03
利用OpenMP、CUDA等并行计算框架,可以实现多核或多
GPU上的并行计算。
FFT的优化方法
算法改进
FFT的历史与发展
历史
FFT的诞生可以追溯到1960年代,其发展经历了多个阶段,包括库利-图基算法、威尔金森算法、桑德斯算法等 。
发展
随着计算机技术的不断进步,FFT算法在实现方式、精度、并行化等方面不断得到优化和改进,以满足不同应用 场景的需求。
02 FFT的基本算法
递归算法
递归算法是一种基于数学归纳法的算法,通过将问题分解为更小的子问题来解决 问题。在FFT中,递归算法将一个长度为N的DFT问题分解为两个长度为N/2的 DFT问题,直到最后分解为基本的DFT问题。
特别是在信号处理领域,FFT的应用非常广泛。
FFT与Z变换的关系
定义
Z变换是离散时间信号 到复平面上的扩展,而 FFT是频域的一种快速 计算方法。
《快速傅里叶变换》课件

FFT的历史背景
01
1960年代,Cooley和Tukey提 出了基于“分治”思想的FFT 算法,为快速傅里叶变换的实 用化奠定了基础。
02
随后,出现了多种FFT算法的 变种和优化,如Radix-2、 Radix-4等。
03
随着计算机技术的发展,FFT 算法在硬件实现上也得到了广 泛应用,如FPGA、GPU等。
《快速傅里叶变换》ppt课件
contents
目录
• FFT简介 • FFT基本原理 • FFT实现 • FFT的应用 • FFT的优化与改进 • FFT的挑战与未来发展
01 FFT简介
FFT的定义
快速傅里叶变换(FFT):一种高效计算离散傅里叶变换(DFT)及其逆变换的 算法。它将复杂度为$O(N^2)$的DFT计算降低到$O(Nlog N)$,大大提高了计 算效率。
详细描述
混合基数FFT算法结合了基数-2和基数-4算法的特点,利用两者在计算过程中的 互补性,减少了计算量,提高了计算效率。同时,该算法在处理大规模数据时 ,能够保持较高的精度。
分段FFT算法
总结词
分段FFT算法将输入数据分成若干段,对每一段进行快速傅里叶变换,以降低计算复杂度和提高计算效率。
详细描述
02 FFT基本原理
离散傅里叶变换(DFT)
定义
应用
DFT是时间域信号到频域的变换,通 过计算信号中各个频率成分的幅度和 相位,可以分析信号的频谱特性。
DFT在信号处理、图像处理、频谱分 析等领域有广泛应用。
计算量
DFT的计算量随着信号长度N的增加 而呈平方关系增长,因此对于长信号 ,计算量巨大。
快速傅里叶变换的原理

快速傅里叶变换的原理快速傅里叶变换(FFT)是一种计算傅里叶变换的快速算法,它将傅里叶变换的复杂度从O(n^2)降低到O(n log n),大大提高了计算效率。
快速傅里叶变换的原理是基于分治法和递归的思想,通过将一个长度为N的离散序列分成两个长度为N/2的子序列,然后将这些子序列分别进行快速傅里叶变换,最后再将它们合并起来,从而得到原序列的傅里叶变换结果。
快速傅里叶变换的原理可以通过以下步骤详细解释:1. 初始化:首先将输入的N个复数序列x(n)进行重排,以便使得序列中的奇数项和偶数项可以分别在计算时被独立处理。
这一步可以使用位逆序排列(bit-reversal permutation)算法来实现,将输入序列中的元素按照其二进制位反转的方法进行重新排列,使得后续计算能够高效地进行。
2. 分治处理:将N个复数序列x(n)分成两个长度为N/2的子序列,分别记为偶数项序列x_e(n)和奇数项序列x_o(n)。
分别对这两个子序列进行快速傅里叶变换,得到它们的傅里叶变换结果X_e(k)和X_o(k)。
3. 合并结果:利用蝶形算法(butterfly algorithm)将两个子序列的傅里叶变换结果X_e(k)和X_o(k)合并起来,得到原序列的傅里叶变换结果X(k)。
蝶形算法是一种迭代的方法,通过不断的蝶形运算将两个输入信号的频域信息进行合并,实现了快速的傅里叶变换。
以上三个步骤就构成了快速傅里叶变换的基本原理,通过将一个长度为N的复数序列进行分治处理,并利用蝶形算法将子序列的傅里叶变换结果合并起来,从而高效地得到原序列的傅里叶变换结果。
快速傅里叶变换的原理可以通过一个简单的例子进行解释。
假设有一个长度为8的复数序列x(n)={1, 2, 3, 4, 4, 3, 2, 1},我们希望计算这个序列的傅里叶变换。
首先将输入序列按照位逆序排列,得到新的序列x'(n)={1, 3, 2, 4, 4, 2, 3, 1},然后将x'(n)分成两个长度为4的子序列x_e(n)={1, 2, 4, 3}和x_o(n)={3, 4, 2, 1}。
快速傅里叶变换例题讲解

快速傅里叶变换过程
合并结果
最后,我们将所有子问题的结果合并起来,得到整个信号的傅里叶变换
3
计算结果
计算结果
通过快速傅里叶变换,我们可以得到信号的频谱。在这个例子中,我们得到的频谱是 从频谱中可以看出,信号中存在频率为0Hz(直流分量),1Hz、2Hz、3Hz和4Hz的成分以及
5Hz、6Hz、7Hz和8Hz的成分。这些成分的幅度分别为4、0、-2、-2、0、0、2和2
-
THANK YOU
ENGLISH
可爱/简约/卡通
快速傅里叶变换过程
蝶形运算
快速傅里叶变换过程
对于每个长度为N的子信号,我 们可以进行一系列的蝶形运算来 计算其傅里叶变换。蝶形运算是 一种高效计算复数乘积的方法, 它利用了复数的对称性和周期性
快速傅里叶变换过程
迭代计算
通过重复上述步骤,我们可以计算出整个 信号的傅里叶变换。这个过程是迭代的, 每次迭代都会将问题分解为更小的子问题
下面我们通过一个简单的例子来讲解快速傅里叶变换
1
问题描述
问题描述
考虑一个由8个采样点组成的离散时间信号,我们希望通过快速傅里叶 变换来分析这个信号的频谱
假设我们的采样时间为T,并且采样频率为f=1/T。采样点如下
x
[
n] = { 1, 2, 3, 4, 5, 6, 7, 8 } 我们的目标是计算这个信号的频谱,也就是信号中每个频率成分的强度。
快速傅里叶变换 例题讲解
-
问题描述
目录
计算结果
快速傅里叶变换例题讲解
傅里叶变换(Fourier Transform,FT)是数学和工程学中用于将一个信号从时域转换到频 域的一种方法。傅里叶变换的计算成本非常高,因为它需要计算信号中每个点的复数指 数。快速傅里叶变换(Fast Fourier Transform,FFT)是一种高效计算傅里叶变换的算法, 它比直接的傅里叶变换计算方法快很多
快速傅里叶变换浅析

快速傅里叶变换浅析快速傅里叶变换(Fast Fourier Transform,FFT)是一种用于将信号在时域和频域之间转换的高效算法。
它广泛应用于数字信号处理、图像处理、音频处理以及其他各种领域。
本文将简要介绍FFT的原理、应用及其优缺点。
一、快速傅里叶变换的原理快速傅里叶变换是傅里叶变换(Fourier Transform,FT)的一种快速算法。
FT是将一个信号分解成不同频率的正弦波组成的频谱。
而FFT则通过将信号分解成更小的子问题并利用许多对称性质来大大减少计算量。
在FFT中,信号被表示为一组复数形式的采样点。
通过对这些采样点进行分解和重组,可得到信号的频谱。
FFT算法的核心思想是将信号分解成大小相等的子问题,并通过迭代的方式快速计算出频谱。
不同大小的子问题需要使用不同的算法,其中最常用的是基2快速傅里叶变换算法(Cooley-Tukey算法)。
二、快速傅里叶变换的应用1. 信号处理领域FFT在信号处理领域得到了广泛应用,例如音频和图像处理。
在音频处理中,FFT可以将时域的音频信号转换为频域,从而实现音频的分析、滤波、压缩等操作。
在图像处理中,FFT可以将图像转换为频域表达,从而实现图像增强、滤波、纹理分析等操作。
2. 通信领域FFT在通信领域也有着重要的应用。
例如,在调制解调器中,FFT被用于将时域的信号转换为频域,以进行调制解调操作。
另外,FFT还可以用于信号的编码、解码和信道估计等方面,提高通信系统的性能。
3. 数值计算领域FFT在数值计算领域也扮演着重要的角色。
例如,在大规模线性方程组的求解中,FFT被用于加速计算过程。
FFT还可以应用于信号滤波、噪声消除、信号重建和频谱分析等方面。
三、快速傅里叶变换的优缺点1. 优点(1)高效性:相比于传统的傅里叶变换算法,FFT具有更高的计算效率,能够在较短的时间内完成复杂的频谱计算。
(2)节省空间:FFT所需的内存空间较少,可以适用于有限的计算资源。
通信中的快速傅里叶变换技术简介
通信中的快速傅里叶变换技术简介快速傅里叶变换(Fast Fourier Transform,FFT)是一种在信号处理、图像处理、数据分析等领域广泛使用的技术。
FFT可以将时间域信号(时域信号)转换为频域信号,也可以将频域信号转换为时域信号,从而实现对信号的分析和处理。
一、傅里叶变换在介绍FFT之前,我们需要先了解傅里叶变换(Fourier Transform,FT)的概念。
傅里叶变换是一种将一个函数表示为多个正弦函数和余弦函数的和的技术,它将时域信号(时间上变化的信号)转换为频域信号(以频率为变量的信号)。
通过对信号在时域和频域的分析,可以得到信号的各种特性,例如频率、振幅、相位等。
傅里叶变换的计算可以使用积分式进行,但是这种方式的计算复杂度很高,特别是对于长度比较长的信号。
因此,为了优化计算速度,就出现了FFT技术。
二、FFT技术FFT技术是一种基于DFT(Discrete Fourier Transform,离散傅里叶变换)的计算快速算法。
DFT是傅里叶变换的离散化处理,将连续信号离散化为时域上的N个采样点,然后进行傅里叶变换。
FFT技术的优点在于其计算复杂度为O(N*logN),比DFT的计算复杂度O(N^2)要低得多。
FFT可以分为多个子问题,每个子问题都是规模较小的DFT问题,因此可以使用递归方式解决,提高了计算效率。
对于长度为N的信号,FFT需要进行log2(N)次迭代计算,每次迭代计算的时间复杂度是O(N),因此FFT的总复杂度为O(N*logN)。
三、应用领域FFT技术在信号处理、图像处理、数据分析等领域广泛使用。
以下是一些应用领域的例子:1.音频信号处理:FFT可以将音频信号转换为频谱信号,根据频率成分实现语音识别、噪声抑制等功能。
2.图像处理:FFT可以将图像转换为频域信号,从而实现高通滤波、低通滤波、频域特征提取等功能。
3.机器学习:FFT可以对信号进行预处理,提取有用的频域特征,用于分类和回归等机器学习任务。
数字信号处理中的快速傅里叶变换
数字信号处理中的快速傅里叶变换快速傅里叶变换(Fast Fourier Transform, FFT)是数字信号处理中一种重要的算法,用于将时域信号转换为频域信号。
通过将信号分解成不同频率的正弦和余弦波,可以提取出信号的频谱信息,进而进行频域分析和滤波等操作。
本文将介绍快速傅里叶变换的原理、算法流程以及在数字信号处理中的应用。
一、快速傅里叶变换的原理快速傅里叶变换是以傅里叶变换为基础的一种高效的算法。
傅里叶变换是将一个周期函数(或有限长的信号)分解成若干个不同频率的正弦和余弦波的叠加。
这些正弦和余弦波的频率和振幅反映了原始信号的频谱特征。
传统的傅里叶变换算法复杂度较高,难以在实时信号处理中应用。
而快速傅里叶变换通过巧妙地利用信号的对称性和周期性,将传统傅里叶变换的复杂度从O(n^2)降低到O(nlogn),大大提高了计算效率。
二、快速傅里叶变换的算法流程快速傅里叶变换算法采用分治法的思想,将信号逐步分解成更小的子问题,并通过递归地计算子问题的频域结果来获得最终的结果。
其算法流程如下:1. 输入原始信号,设信号长度为N。
2. 如果N为1,则直接返回原始信号。
3. 将原始信号分为偶数项和奇数项两部分。
4. 对偶数项序列进行快速傅里叶变换,得到频域结果D1。
5. 对奇数项序列进行快速傅里叶变换,得到频域结果D2。
6. 根据傅里叶变换的性质,将D1和D2组合成整体的频域结果,得到最终结果。
7. 返回最终结果。
三、快速傅里叶变换在数字信号处理中的应用1. 频谱分析:快速傅里叶变换可以将信号从时域转换到频域,通过分析信号的频谱特征,可以提取信号的频率成分,并得到各频率成分的振幅和相位信息。
在音频、图像处理等领域,频谱分析是常见的操作,可以实现音乐信号的频谱可视化、图像去噪和图像压缩等任务。
2. 滤波操作:快速傅里叶变换可以将信号转换到频域后进行滤波操作。
在通信系统中,为了提高信号抗干扰能力和传输效率,通常使用滤波器对信号进行处理。
《快速傅里叶变换FF》课件
contents
目录
• FFT简介 • FFT的基本原理 • FFT的应用 • FFT的实现 • FFT的性能优化 • FFT的局限性
CHAPTER 01
FFT简介
FFT的定义
快速傅里叶变换(FFT):一种高效计算离散傅里叶变换(DFT)及其逆变换的 算法。它将复杂度为$O(N^2)$的DFT计算降低到$O(Nlog N)$,极大地提高了 计算效率。
通过选择适合特定数据集的基数,混 合基数FFT可以在不同的应用场景下 获得最佳性能。
混合基数FFT结合了基于2的幂次和基 于其他基数的算法,以获得更好的计 算效率和精度。
CHAPTER 06
FFT的局限性
浮点运算的开销
快速傅里叶变换(FFT)是一种高效的算法,用于计算离散傅里叶变换(DFT)和其逆变换。然而, 由于FFT涉及到大量的复数运算,因此其计算开销相对较大,尤其是对于大规模数据。
分段FFT
分段FFT是一种将大规模FFT分 解为多个小规模FFT的方法, 可以显著提高计算速度。
通过将输入数据分成多个段, 每个段可以独立进行FFT计算 ,从而并行处理多个段。
分段FFT适用于大规模数据集 ,可以有效地利用多核处理器 和分布式计算资源,提高计算 效率。
混合基数FFT
混合基数FFT是一种将不同基数算法 结合在一起的FFT方法,可以获得更 好的性能。
快速傅里叶变换(FFT)算法
定义
快速傅里叶变换(FFT)是一种高效的计算离散傅里叶变换( DFT)和其逆变换的算法。它通过一系列数学运算将DFT的 计算量从N^2降低到了Nlog2N,大大提高了计算效率。
算法原理
FFT算法基于DFT的周期性和对称性,将一个N点的DFT分解 为多个较短序列的DFT,然后利用递归和分治的思想进行计 算,最终得到原始序列的频域表示。
五种傅里叶变换
五种傅里叶变换傅里叶变换是一种将信号从时域转换到频域的数学工具,它在信号处理、图像处理、通信等领域都有广泛的应用。
傅里叶变换可以分为五种:离散傅里叶变换(DFT)、快速傅里叶变换(FFT)、连续时间傅里叶变换(CTFT)、离散时间傅里叶变换(DTFT)和希尔伯特-黄变换(HHT)。
一、离散傅里叶变换(DFT)离散傅里叶变换是指将一个有限长的离散序列,通过一定的算法转化成一个同样长度的复数序列。
它是一种计算量较大的方法,但在某些情况下精度更高。
DFT 的公式如下:$$F(k)=\sum_{n=0}^{N-1}f(n)e^{-i2\pi kn/N}$$其中 $f(n)$ 是原始信号,$F(k)$ 是频域表示。
二、快速傅里叶变换(FFT)快速傅里叶变换是一种计算 DFT 的高效算法,它可以减少计算量从而加快计算速度。
FFT 的实现方法有多种,其中最常用的是蝴蝶运算法。
FFT 的公式与 DFT 相同,但计算方法不同。
三、连续时间傅里叶变换(CTFT)连续时间傅里叶变换是指将一个连续的时间信号,通过一定的算法转化成一个连续的频域函数。
CTFT 的公式如下:$$F(\omega)=\int_{-\infty}^{\infty}f(t)e^{-i\omega t}dt$$其中 $f(t)$ 是原始信号,$F(\omega)$ 是频域表示。
四、离散时间傅里叶变换(DTFT)离散时间傅里叶变换是指将一个无限长的离散序列,通过一定的算法转化成一个同样长度的周期性复数序列。
DTFT 的公式如下:$$F(e^{j\omega})=\sum_{n=-\infty}^{\infty}f(n)e^{-j\omegan}$$其中 $f(n)$ 是原始信号,$F(e^{j\omega})$ 是频域表示。
五、希尔伯特-黄变换(HHT)希尔伯特-黄变换是一种基于经验模态分解(EMD)和 Hilbert 变换的非线性时频分析方法。
它可以对非平稳信号进行时频分析,并提取出信号中的本征模态函数(IMF)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ω =( 0,i) ω
4 3
2
ω
1
ω =(-1,0)
ω =(1,0)
8
ω
5 6
ω
7
ω =(0,-i) 2014-5-5
9
串行FFT递归算法
偶数时:bl b2l 2lk ak
k 0 n 1
a0 2l a1 4l a2
2 2 2
2l n 1 2
a0 2la1 4l 2 a2 a n a n 1
2l
2 2
a
n 1 2
2l n 1 2
n 1 2
2l n 1 2
an 1
4l 2
2
n 1 2
(a0 a n ) (a1 a n 1 ) (a2 a n 2 )
2l
2 2 2 2 2
n 1 2
(a n 1 an 1 )
2 2
1 n 1 ~ l (a a ) ~ 2l 2 (a a ) ~l n 2 2 (a0 a n ) (a n 1 an 1 ) n n 1 2 1 2
代码2
w=ω0 for j=0 to n-1 do b[j]=0, s=ω0 for k=0 to n-1 do b[j]=b[j]+s*a[k] s=s*w end for w=w*ω end for
2014-5-5 7
注:代码1需要计算ωk*j
代码2的复杂度为O(n2)
11.1 快速傅里叶变换(FFT)
b0 b4 b2
1
b6 b1
1
b5 b3
1
b7
图11.4
2014-5-5 13
串行FFT递归算法
SISD上的FFT分治递归算法
输入: a=(a0,a1,…,an-1); 输出: B=(b0,b1,…,bn-1) Procedure RFFT(a,b) begin if n=1 then b0=a0 else (1)RFFT(a0,a2,…,an-2, u0,u1,…,un/2-1) (2)RFFT(a1,a3,…,an-1, v0,v1,…,vn/2-1) (3)z=1 (4)for j=0 to n-1 do (4.1)bj=uj mod n/2+zvj mod n/2 (4.2)z=zω endfor 注: (1)算法时间复杂度 t(n)=2t(n/2)+O(n) endif 解得 t(n)=O(nlogn) end (2) 算法原理? 2014-5-5
2
2014-5-5
11
串行FFT递归算法
FFT的蝶式递归计算图(由计算原理推出)
a a
+
0
a 0+a n
2
+
1
a 1+a n +1
2
. . .
. . . + 1 ω
n a2 -1 +a n-1
DFT(n/2)
. . .
a n -1
2
an
2
a 0-a n
2
a n +1
2
ω (a 1-a n
2
+1 )
2014-5-5 16
串行FFT非递归算法
蝶式计算流图
a0 a 0 +a
1
a0 a1
0 0 1 (b) 0
b0 b2 b1 b3
0
a
(a 0 -a 1 )ω
0
2
a1
(a)
a3
2014-5-5
17
串行FFT非递归算法
行0 a 0 行1 a 1 0 行2 a 2 0 行3 a 3 2 0 0 行4 a 4 1 行5 a 5 0 行6 a 6 2 0 行7 a 7 3 2 0 如: b6=[(a0+a4)-(a2+a6)]-[(a1+a5)-(a3+a7)]ω2 注: ①下行线结点处的权因子的确定问题; ②bi的下标确定:取行号的位序反。如,行3: 3=(011)2 ==>(110)2=6, ==> 行3的输出为b6
离散傅里叶变换(DFT)
定义
给定向量A=(a0,a1,…,an-1)T,DFT将A变换为B=(b0,b1,…,bn-1)T
即 b j ak kj
k 0 n 1
0 j n 1
这里=e 2i / n为n次单位元根, i 1; 写成矩阵形式为 b0 0 0 0 b 0 1 2 1 0 n 1 2 ( n 1) bn 1 0 a0 n 1 a1 ( n 1)( n 1) a n 1
并行计算
第三篇 并行数值算法
第八章 基本通讯操作 第九章 稠密矩阵运算 第十章 线性方程组的求解 第十一章 快速傅里叶变换
第十一章 快速傅里叶变换
11.1 快速傅里叶变换 11.2 并行FFT算法
11.1 快速傅里叶变换(FFT)
11.1.1 离散傅里叶变换(DFT) 11.1.2 DFT的顺序代码 11.1.3 串行FFT递归算法 11.1.4 串行FFT非递归算法
a n 1
2
a n 2l a n 1 4l a n 2
2l n 1 2
2 2
2l n 1 2
an 1
2
(a0 a n ) 2l (a1 a n 1 ) 4l (a2 a n 2 ) (a n 1 an 1 )
2014-5-5
5
11.1 快速傅里叶变换(FFT)
11.1.1 离散傅里叶变换(DFT) 11.1.2 DFT的顺序代码 11.1.3 串行FFT递归算法 11.1.4 串行FFT非递归算法
DFT的顺序代码
代码1
for j=0 to n-1 do b[j]=0 for k=0 to n-1 do b[j]=b[j]+ωk*ja[k] end for end for
. . .
-
. . . ω
n
2
DFT(n/2)
-1 -an-1 )
-1
a
ω2
n
-1(a n
. . .
n-1
2
2014-5-5 12
串行FFT递归算法
特别地,n=8的FFT蝶式计算图(展开的)
a0 a1 a2 a3 a4 a5 a6 a7
+ + + + _ _ _ _ 1 ω ω2 ω3 + + _ _ + + _ _ 1 ω2 1 ω2 + _ + _ + _ + _ 1
2014-5-5
b0 b4 b2 b6 b1 b5 b3 b7
18
第十一章 快速傅里叶变换
11.1 快速傅里叶变换 11.2 并行FFT算法
11.2 并行FFT算法
11.2.1 SIMD-MC2上的FFT算法 11.2.2 SIMD-BF上的FFT算法
SIMD-MC2上的FFT算法
算法描述
~ k l k (a a ) n k k
k 0
2
n 1 2
l 0,1, , n 2 1
n 1 2 2 2
因此,向量 (b1 , b3 ,...,bn 1 ) 是((a0 a n ), (a1 a n 1 ),...,
T
(a n 1 an 1 ))T 的DFT
n个处理器组成n1/2×n1/2的方阵, 处理器以行主序编号
n1/2
P0 P1 P2 P3
P4
P5
P6
P7
n 1/2
P8 P9 P10 P11
P12
P13
P14
2014-5-5
P15
图11.5
21
算法11.3(P270): 输入: ak处于Pk中; 输出bk处于Pk中
SIMD-MC2上的FFT算法
14
11.1 快速傅里叶变换(FFT)
11.1.1 离散傅里叶变换(DFT) 11.1.2 DFT的顺序代码 11.1.3 串行FFT递归算法 11.1.4 串行FFT非递归算法
串行FFT非递归算法
蝶式计算示例
b0 1 1 a0 1 1 a0 b0 a0 a1 当n 2时, b1 1 a1 1 1 a1 b1 a0 a1 1 1 a0 1 1 1 1 a0 b0 1 1 b 1 2 3 a 1 1 a 1 1 当n 4时, 1 = b2 1 2 4 6 a2 1 1 1 1 a2 3 6 9 b a 1 1 1 3 a3 3 对调b1和b2, b0 1 1 b 1 - 1 2 = b1 0 0 b3 0 0 0 1 0 1 0 a0 b0 (a0 a2 ) (a1 a3 ) 0 1 0 a b (a a ) (a a ) 0 0 1 2 0 2 1 3 1 1 1 1 0 - 1 0 a2 b1 (a0 a2 ) (a1 a3 ) 1 - 1 0 0 - a3 b3 (a0 a2 ) (a1 a3 ) 0
2 2 2
~ l (a a ) ~ 2l (a a ) ( a0 a n ) n 1 n 2 1 2