FFT算法原理
FFT算法详解

FFT算法详解FFT (Fast Fourier Transform) 是一种高效的离散傅里叶变换算法,用于将时域信号转换为频域信号。
它在信号处理、图像处理、通信领域等具有广泛的应用。
本文将详细介绍FFT算法的原理和实现。
一、傅里叶变换的基本原理傅里叶变换是一种将信号从时域转换到频域的方法。
它将时域信号分解成多个不同频率的正弦和余弦函数的叠加。
傅里叶变换的基本公式为:F(k) = Σ_{n=0}^{N-1} f(n)e^{-2πikn/N}其中,F(k)是频域信号的复数表示,f(n)是时域信号的复数表示,N是信号长度,k是频率。
二、傅里叶变换的问题传统的傅里叶变换算法的时间复杂度为O(N^2),计算量较大,不适用于实时处理大型信号。
FFT算法通过分治的思想,将DFT(Digital Fourier Transform)问题转化为多个子问题,从而降低了计算复杂度。
三、蝶形运算蝶形运算的公式为:y_0=x_0+W_N^k*x_1y_1=x_0-W_N^k*x_1其中,x_0、x_1是输入,y_0、y_1是输出,W_N^k是旋转因子,N是信号长度,k是频率。
四、FFT算法的步骤1.将输入信号分成偶数下标和奇数下标的两个子序列。
2.对两个子序列分别进行FFT变换,得到两个子序列的频域表示。
3.将两个子序列的频域表示合并成完整的频域信号。
4.重复上述步骤,直到得到最终的频域信号。
五、FFT算法的实现1.初始化输入信号和旋转因子。
2.将输入信号按照偶数下标和奇数下标分成两个子序列。
3.对两个子序列分别进行FFT变换,递归调用FFT函数。
4.将两个子序列的频域表示合并成完整的频域信号。
5.返回最终的频域信号。
总结:FFT算法是一种高效的离散傅里叶变换算法,通过分治的思想将DFT问题分解为多个子问题,从而降低了计算复杂度。
它在信号处理、图像处理、通信领域等有着广泛的应用。
掌握FFT算法的原理和实现对于理解信号处理技术和提高算法效率具有重要意义。
FFT算法设计(含程序设计)

FFT算法设计(含程序设计)简介快速傅里叶变换(FFT)是一种高效计算离散傅里叶变换(DFT)的算法,它的运算复杂度是O(nlogn)。
FFT在信号处理、图像处理、通信以及其他领域中广泛应用。
本文将介绍FFT算法的原理,并给出一个简单的FFT算法的程序设计示例。
FFT算法原理FFT算法基于DFT的性质,通过利用对称性和周期性,将一个长度为n的序列划分为多个规模较小的子序列,并对其进行逐步变换,最终得到整个序列的傅里叶变换结果。
FFT算法的核心思想是分治法,即将一个长度为n的序列划分为两个长度为n/2的子序列,然后对子序列分别进行FFT变换,再进行组合得到原序列的DFT。
具体的步骤如下:1. 如果n=1,DFT即为序列本身;2. 将长度为n的序列划分为两个长度为n/2的子序列,分别为序列A和序列B;3. 对序列A进行FFT变换得到A的傅里叶变换结果;4. 对序列B进行FFT变换得到B的傅里叶变换结果;5. 将A和B的傅里叶变换结果按照以下公式组合得到原序列的傅里叶变换结果:![FFT公式]()FFT算法程序设计示例下面是一个使用语言实现的简单FFT算法的程序设计示例:import cmathdef fft(x):N = len(x)if N <= 1:return xeven = fft(x[0::2])odd = fft(x[1::2])T = [cmath.exp(-2j cmath.pi k / N) odd[k] for k in range(N // 2)]return [even[k] + T[k] for k in range(N // 2)] + [even[k] T[k] for k in range(N // 2)]测试代码x = [1, 2, 3, 4]X = fft(x)print(X)以上代码实现了一个递归版本的FFT算法。
输入序列x为长度为2的幂次的复数序列,输出序列X为其傅里叶变换结果。
fft的计算原理

fft的计算原理FFT(Fast Fourier Transform)是一种高效地计算离散傅里叶变换(Discrete Fourier Transform, DFT)的算法。
FFT能够将一个时域上的离散信号转换到频域上,并可以用于信号分析、滤波、图像处理以及编码等领域。
FFT的计算原理可以从两个角度来讲解:一是从离散傅里叶变换(DFT)的定义出发,二是从FFT的具体计算过程中各个步骤的推导和实现。
首先,从DFT的定义出发,对一个离散信号x(n)进行DFT计算,可以得到其频域表示X(k),表示为:X(k) = Σ(x(n) * exp(-j2πkn/N))其中,N为信号的长度,k为频域采样点的索引,n为时域采样点的索引。
直接按照DFT的定义计算的复杂度是O(N^2),当信号长度很大时,计算量非常大。
FFT算法通过对DFT的变换矩阵进行分解,将复杂度降低到O(NlogN)。
然后,从FFT的具体计算过程中各个步骤的推导和实现来看。
以下是常见的快速傅里叶变换算法,即Cooley-Tukey算法的计算过程:1. 将信号x(n)分为两个部分:偶数索引部分x_e(n)和奇数索引部分x_o(n),分别由原信号的偶数索引和奇数索引采样得到。
2. 对x_e(n)和x_o(n)分别进行FFT计算,得到频域表示X_e(k)和X_o(k)。
3. 将得到的频域表示X_e(k)和X_o(k)按照以下公式合并得到最终的频域表示X(k):X(k) = X_e(k) + W_N^k * X_o(k)其中,W_N^k = exp(-j2πk/N)为旋转因子,可由欧拉公式得到。
4. 重复以上步骤,直到计算得到所有频域采样点的值。
以上就是FFT算法的基本原理和计算过程。
通过对信号进行分解和合并的方式,FFT算法能够大大减少计算量,快速地计算得到离散信号的频域表示。
后续还有一些对FFT算法进行改进和优化的方法,如快速傅里叶变换的再加工算法(Radix-2 FFT Algorithm)以及快速余弦和正弦变换(Fast Cosine and Sine Transform)等。
fft算法的基本原理

fft算法的基本原理快速傅里叶变换(FastFourierTransform,FFT)算法是一种经典的基于信号处理的算法,其作用是将时域信号转换为频域信号。
它的算法可以用于前端的信号处理,以更有效的方式执行空域和频域信号转换。
快速傅里叶变换(FFT)算法是由科学家约翰弗里德里赫傅立叶发明的。
它是从傅立叶变换(FT)算法有效地改进而来的。
FT算法是一种将时域信号转换为频域信号的技术,因其可以实现复杂信号的高效处理而被广泛应用。
FFT算法旨在改善FT算法的处理效率。
它最早是由约翰弗里德里赫傅立叶于1846年发明的,后来由真空管算法的发展对它进行了优化,直至20世纪50年代,由心电图学家James Cooley和John Tukey使用计算机科学将其有效地实施。
FFT算法的发展为信号处理技术的发展提供了新的思路,由此,FFT算法成为信号处理技术的经典算法之一。
FFT算法的原理十分简单,是将时域信号转换为频域信号的一种有效方法。
此外,FFT算法可以有效地拆分复杂的频域信号,从而使其成本和处理效率更低。
FFT算法的基本原理是,通过傅立叶变换,将时域信号转换为频域信号。
傅立叶变换是一种从时域到频域的线性变换,它可以将时域信号转换为频域信号。
不同的时域信号会在频域中产生不同的响应,这样,对不同的时域信号可以做出不同的频域响应。
FFT算法的关键点是拆分时域信号,以减少傅立叶变换的耗时。
它通过利用均匀(uniform)采样和非均匀(non-uniform)采样,将时域信号转换为特定数量的离散频率信号,每个频率信号的幅值表示出时域信号在同一时刻的特定周期率的测量值。
非均匀采样是FFT算法的基本要素,它指将时域信号转换为频域信号时采用的采样步长不要求一定,而是逐渐增大。
这样可以减少傅立叶变换的处理时间。
最后,FFT算法可以将时域信号转换为频域信号,从而获得信号的实际内容。
快速傅立叶变换(FFT)算法是将时域信号转换为频域信号的一种高效手段。
fft的算法原理

fft的算法原理
傅里叶变换(Fast Fourier Transform,简称FFT)是一种通过离散傅里叶变换(DFT)快速计算信号频谱的算法。
FFT算法的原理基于分治算法,它将一个长度为N的时间序列分解成N个长度为1的时间序列,然后再进行多次合并计算得到最终结果。
具体而言,FFT算法的过程可以分为两个步骤:分解(Decomposition)和合并(Combination)。
在分解步骤中,将长度为N的时间序列分为两个长度为N/2的时间序列,这可以通过以下公式进行表示:
X(k) = X_even(k) + W_N^k * X_odd(k)
其中,X(k)表示频域中的第k个频率点,X_even(k)表示时间序列中偶数索引位置的样本的频谱,X_odd(k)表示时间序列中奇数索引位置的样本的频谱,W_N以及W_N^k是旋转因子。
接着,在合并步骤中,将两个长度为N/2的频谱再次合并为一个长度为N的频谱。
合并过程可以通过以下公式表示:
X(k) = X_even(k mod (N/2)) + W_N^k * X_odd(k mod (N/2))
其中,mod表示取模运算。
通过不断进行分解和合并的过程,最终可以得到整个时间序列的频谱。
FFT算法的关键点是快速计算旋转因子W_N^k。
这可以通过使用旋转因子的周期性特征,以及将其表示为复数的形式,使
用复数乘法和加法来高效计算。
这样,就避免了对每个频率点都重新计算旋转因子,从而提高了计算效率。
总的来说,FFT算法利用分治思想,通过将长序列分解为短序列再合并的方式,实现了高效的频谱计算。
它在信号处理、图像处理、通信等领域具有广泛应用。
fft算法原理

fft算法原理FFT算法原理。
快速傅里叶变换(FFT)是一种计算机算法,用于高效地计算离散傅里叶变换(DFT),是信号处理、图像处理、数据压缩、密码学等领域中广泛应用的重要算法。
本文将介绍FFT算法的原理及其应用。
傅里叶变换是一种信号处理中常用的数学工具,它可以将一个信号从时间域转换到频率域,从而揭示出信号的频率成分。
DFT是傅里叶变换的离散形式,它将N个离散时间点的信号转换为N个离散频率点的频谱。
然而,传统的DFT算法复杂度为O(N^2),计算量较大,特别是对于大规模数据而言,计算时间将会变得非常长。
FFT算法的出现正是为了解决这一问题,它将DFT的计算复杂度降低到O(NlogN),大大提高了计算效率。
FFT算法的原理主要基于分治法和递归思想。
它将一个长度为N的DFT分解为两个长度为N/2的DFT,然后通过递归地计算子问题的DFT,最终将问题规模缩小到1。
在计算过程中,FFT算法利用了信号的周期性质,通过旋转因子来降低计算复杂度。
具体而言,FFT算法利用了蝶形运算结构,将DFT的计算过程分解为多个阶段,每个阶段都是对一组蝶形运算的计算,从而实现了计算量的大幅度减少。
除了计算效率高之外,FFT算法还具有良好的数值稳定性和精度。
它可以准确地计算出信号的频谱分量,并且由于其递归的特性,FFT算法非常适合于并行计算,可以充分利用多核处理器和分布式计算系统的优势,进一步提高计算效率。
在实际应用中,FFT算法被广泛应用于数字信号处理、音频处理、图像处理、通信系统、雷达系统等领域。
例如,在音频处理中,FFT算法可以用于音频频谱分析、音频合成、降噪等方面;在通信系统中,FFT算法可以用于调制解调、信道均衡、频谱分析等方面。
此外,FFT算法还被广泛应用于科学计算、地震勘探、医学影像处理等领域。
总之,FFT算法作为一种高效的计算傅里叶变换的算法,具有计算效率高、精度高、稳定性好等优点,被广泛应用于各个领域。
随着计算机硬件性能的不断提升,FFT算法的应用前景将更加广阔,有望在更多领域发挥重要作用。
FFT原理

x1(2l 1) x4 (l )
x2 (2l ) x5 (l )
x2 (2l 1) x6 (l )
l 0,1,....
N 2
1
例:N=23=8 按时间抽取的DFT分解过程
由于N/2 仍是偶数,可以被2整除,因此可 以对两个N/2点的DFT再分别作进一步的分解。将
一个8点的DFT可以分解成四个2点的DFT,直到最
(1)蝶形运算
对于N=2M,总可以通过M次分解最后分解成2点
的DFT运算。这构成从 x(n)到X(k)的M级运算过程。
从上面流图可看到,每一级运算都由N/2个蝶形运 算构成。因此每一级运算都需要N/2次复乘和N次 复加,经过M级运算后总共需要的运算量为: 复乘:
N 2
复加:
M
N 2
log 2 N
j 2 nk N
w w
nk N
n ( N k ) N
w
nk N
k ( N n ) N
N wN / 2 1
w
n ( k N / 2) N
w
nk 我们利用系数 w N 的周期性和对称性,考察它 是如何简化DFT运算的过程。
以N=4为例, 4 的矩阵形式为: wnk
0 0 w4 w4 0 w4 w1 4 0 2 w4 w4 0 3 w4 w4 0 0 0 w4 w4 w4 2 3 周期性 0 w4 w4 w4 0 4 6 w4 w4 w4 0 6 9 w4 w4 w4 0 0 0 0 w4 w4 w 4 w 4 1 2 3 对称性 0 w4 w 4 w 4 w4 0 2 0 2 w4 w4 w4 w4 0 3 2 1 w4 w4 w4 w4 0 0 0 w4 w4 w 4 1 0 1 w4 w4 w 4 0 0 0 w4 w4 w4 1 0 1 w4 w4 w4
fft的模糊检测算法 c++

一、介绍FFT模糊检测算法FFT模糊检测算法是一种利用傅立叶变换进行图像模糊检测的方法。
它主要通过分析图像的频谱信息来判断图像是否存在模糊现象,从而可以对图像进行相应的处理。
二、 FFT模糊检测算法的原理1. 傅立叶变换的原理和应用傅立叶变换是一种将时域信号转换为频域信号的数学工具,可以将信号的频谱信息直观地展现出来。
在图像处理中,傅立叶变换广泛应用于图像去噪、滤波和模糊检测等方面。
2. FFT模糊检测算法的原理FFT模糊检测算法利用傅立叶变换将图像从时域转换到频域,然后分析频域中的能量分布情况,通过判断能量集中的情况来判断图像是否模糊。
一般来说,模糊的图像在频域中会存在能量分布较为集中的现象,而清晰的图像则相对分散。
三、FFT模糊检测算法的实现1. 图像的傅立叶变换需要对待检测的图像进行傅立叶变换,将图像转换到频域。
这一步可以利用现成的傅立叶变换函数进行实现,比如C++中常用的OpenCV 库中提供了相应的函数。
2. 频域能量分析在频域中,可以利用各种统计方法或者能量分布特征来判断图像的模糊程度。
可以计算频率谱中的能量均值、方差,或者利用能量集中度等指标来进行判断。
3. 模糊判断根据频域能量分析的结果,可以对图像进行模糊的判断。
如果能量集中度较高,则可以认为图像存在模糊现象;相反,能量较为分散的图像则可能为清晰图像。
四、FFT模糊检测算法的优缺点1. 优点FFT模糊检测算法可以通过分析频域信息来判断图像的模糊程度,相对于直接在时域进行分析,更加直观和准确。
2. 缺点FFT模糊检测算法依赖于傅立叶变换,对计算性能和存储空间要求较高,且在处理非线性模糊时会存在一定的局限性。
五、 FFT模糊检测算法的应用1. 视瓶监控领域在视瓶监控领域,经常需要对监控图像进行模糊检测,以确保监控画面的清晰度。
FFT模糊检测算法可以用于实时监控图像的质量评估。
2. 医学影像分析在医学影像分析中,清晰度对诊断结果有着重要影响。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2010-10-07 21:10:09| 分类:数字信号处理 | 标签:fft dft |字号订阅
在数字信号处理中常常需要用到离散傅立叶变换(DFT),以获取信号的频域特征。
尽管传统的DFT算法能够获取信号频域特征,但是算法计算量大,耗时长,不利于计算机实时对信号进行处理。
因此至DFT被发现以来,在很长的一段时间内都不能被应用到实际的工程项目中,直到一种快速的离散傅立叶计算方法——FFT,被发现,离散是傅立叶变换才在实际的工程中得到广泛应用。
需要强调的是,FFT并不是一种新的频域特征获取方式,而是DFT的一种快速实现算法。
本文就FFT的原理以及具体实现过程进行详尽讲解。
DFT计算公式
本文不加推导地直接给出DFT的计算公式:
其中x(n)表示输入的离散数字信号序列,WN为旋转因子,X(k)一组N点组成的频率成分的相对幅度。
一般情况下,假设x(n)来自于低通采样,采样频率为fs,那么X(k)表示了从-fs/2率开始,频率间隔为fs/N,到fs/2-fs/N截至的N个频率点的相对幅度。
因为DFT 计算得到的一组离散频率幅度只实际上是在频率轴上从成周期变化的,即X(k+N)=X(k)。
因此任意取N个点均可以表示DFT的计算效果,负频率成分比较抽象,难于理解,根据X(k)的周期特性,于是我们又可以认为X(k)表示了从零频率开始,频率间隔为fs/N,到fs-fs/N截至的N个频率点的相对幅度。
N点DFT的计算量
根据(1)式给出的DFT计算公式,我们可以知道每计算一个频率点X(k)均需要进行N次复数乘法和N-1次复数加法,计算N各点的X(k)共需要N^2次复数乘法和N*(N-1)次复数加法。
当x(n)为实数的情况下,计算N点的DFT需要2*N^2次实数乘法,2*N*(N-1)次实数加法。
旋转因子WN的特性
1.WN的对称性
2.WN的周期性
3.WN的可约性
根据以上这些性质,我们可以得到式(5)的一些列有用结果
基-2 FFT算法推导
假设采样序列点数为N=2^L,L为整数,如果不满足这个条件可以人为地添加若干个0以使采样序列点数满足这一要求。
首先我们将序列x(n)按照奇偶分为两组如下:
于是根据DFT计算公式(1)有:
至此,我们将一个N点的DFT转化为了式(7)的形式,此时k的取值为0到N-1,现在分为两段来讨论,当k为0~N/2-1的时候,因为x1(r),x2(r)为N/2点的序列,因此,此时式(7)可以写为:
而当k取值为N/2~N-1时,k用k’+N/2取代,k’取值为0~N/2-1。
对式(7)化简可得:
综合以上推导我们可以得到如下结论:一个N点的DFT变换过程可以用两个N/2点的DFT变换过程来表示,其具体公式如式(10)所示DFT快速算法的迭代公式:
上式中X'(k’)为偶数项分支的离散傅立叶变换,X''(k’’)为奇数项分支的离散傅立叶变换。
式(10)的计算过程可以用图1的蝶形算法流图直观地表示出来。
图1 时间抽取法蝶形运算流
图
在图1中,输入为两个N/2点的DFT输出为一个N点的DFT结果,输入输出点数一致。
运用这种表示方法,8点的DFT可以用图2来表示:
图2 8点DFT的4点分解
根据公式(10),一个N点的DFT可以由两个N/2点的DFT运算构成,再结合图1的蝶形信号流图可以得到图2的8点DFT的第一次分解。
该分解可以用以下几个步骤来描述:
1.将N点的输入序列按奇偶分为2组分别为N/2点的序列
2.分别对1中的每组序列进行DFT变换得到两组点数为N/2的DFT变换值X1和X2
3.按照蝶形信号流图将2的结果组合为一个N点的DFT变换结果
根据式(10)我们可以对图2中的4点DFT进一步分解,得到图3的结果,分解步骤和前面一致。
图3 8点DFT的2点分解
最后对2点DFT进一步分解得到最终的8点FFT信号计算流图:
图4 8点DFT的全分解
从图2到图4的过程中关于旋转系数的变化规律需要说明一下。
看起来似乎向前推一级,在奇数分组部分的旋转系数因子增量似乎就要变大,其实不是这样。
事实上奇数分组部分的旋转因子指数每次增量固定为1,只是因为每向前推进一次,该分组序列的数据个数变少了,为了统一使用以原数据N为基的旋转因子就进行了变换导致的。
每一次分组奇数部分的系数WN,这里的N均为本次分组前的序列点数。
以上边的8点DFT为例,第一次分组N=8,第二次分组N为4,为了统一根据式(4)进行了变换将N变为了8,但指数相应的需要乘以2。
N点基-2 FFT算法的计算量
从图4可以看到N点DFT的FFT变换可以转为log2(N)级级联的蝶形运算,每一级均包含有N/2次蝶形计算。
而每一个蝶形运算包含了1次复数乘法,2次复数加法。
因此N点FFT计算的总计算量为:复数乘法——N/2×log2(N) 复数加法——N×log2(N)。
假设被采样的序列为实数序列,那么也只有第一级的计算为实数与复数的混合计算,经过一次迭代后来的计算均变为复数计算,在这一点上和直接的DFT计算不一致。
因此对于输入序列是复数还是实数对FFT算法的效率影响较小。
一次复数乘法包含了4次实数乘法,2次实数加法,一次复数加法包含了2次复数加法。
因此对于N点的FFT计算需要总共的实数乘法数量为:2×N×log2(N);总的复数加法次数为:
2xNxlog2(N)。
N点基-2 FFT算法的实现方法
从图4我们可以总结出对于点数为N=2^L的DFT快速计算方法的流程:
1.对于输入数据序列进行倒位序变换。
该变换的目的是使输出能够得到X(0)~X(N-1)的顺序序列,同样以8点DFT为例,该变换将顺序输入序列x(0)~x(7)变为如图4的
x(0),x(4),x(2),x(6),x(1),x(5),x(3),x(7)序列。
其实现方法是:假设顺序输入序列一次存在A(0)~A(N-1)的数组元素中,首先我们将数组下标进行二进制化(例:对于点数为8的序列只需要LOG2(8) = 3位二进制序列表示,序号6就表示为110)。
二进制化以后就是将二进制序列进行倒位,倒位的过程就是将原序列从右到左书写一次构成新的序列,例如序号为6的二进制表示为110,倒位后变为了011,即使十进制的3。
第三步就是将倒位前和倒位后的序号对应的数据互换。
依然以序号6为例,其互换过程如下:
temp = A(6);
A(6) = A(3);
A(3) = A(6);
实际上考虑到执行效率,如果对于每一次输入的数据都需要这个处理过程是非常浪费时间的。
我们可以采用指向指针的指针来实现该过程,或者是采用指针数组来实现该过程。
2.蝶形运算的循环结构。
从图4中我们可以看到对于点数为N = 2^L的fft运算,可以分解为L阶蝶形图级联,每一阶蝶形图内又分为M个蝶形组,每个蝶形组内包含K个蝶形。
根据这一点我们就可以构造三阶循环来实现蝶形运算。
编程过程需要注意旋转因子与蝶形阶数和蝶形分组内的蝶形个数存在关联。
3.浮点到定点转换需要注意的关键问题
上边的分析都是基于浮点运算来得到的结论,事实上大多数嵌入式系统对浮点运算支持甚微,因此在嵌入式系统中进行离散傅里叶变换一般都应该采用定点方式。
对于简单的DFT运算从浮点到定点显得非常容易。
根据式(1),假设输入x(n)是经过AD采样的数字序列,AD 位数为12位,则输入信号范围为0~4096。
为了进行定点运算我们将旋转因子实部虚部同时扩大2^12倍,取整数部分代表旋转因子。
之后,我们可以按照(1)式计算,得到的结果与原结果成比例关系,新的结果比原结果的2^12倍。
但是,对于使用蝶形运算的fft我们不能采用这种简单的放大旋转因子转为整数计算的方式。
因为fft是一个非对称迭代过程,假设我们对旋转因子进行了放大,根据蝶形流图我们可以发现其最终的结果是,不同的输入被放大了不同的倍数,对于第一个输入x(0)永远也不会放大。
举一个更加形象的例子,还是以图4为例。
从图中可以看出右侧的X(0)可以直接用下式表示:
从上式我们可以看到不同输入项所乘的旋转因子个数(注意这里是个数,就算是wn^0,也被考虑进去了,因为在没有放大时wn^0等于1,放大后所有旋转因子指数模均不为1,因此需要考虑)。
这就导致输入不平衡,运算结果不正确。
经查阅相关资料,比较妥善的做法是,首先对所有旋转因子都放大2^Q倍,Q必须要大于等于L,以保证不同旋转因子的差异化。
旋转因子放大,为了保证其模为1,在每一次蝶形运算的乘积运算中我们需要将结果右移Q位来抵消这个放大,从而得到正确的结果。
之所以采用放大倍数必须是2的整数次幂的原因也在于此,我们之后可以通过简单的右移位运算将之前的放大抵消,而右移位又代替了除法运算,大大节省了时间。