第四章--快速傅立叶变换
数字信号处理课件第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是频域的一种快速 计算方法。
快速傅里叶变换推导
快速傅里叶变换推导摘要:1.快速傅里叶变换的概念与意义2.傅里叶变换的定义与性质3.快速傅里叶变换的算法原理4.快速傅里叶变换的实际应用正文:一、快速傅里叶变换的概念与意义快速傅里叶变换(Fast Fourier Transform,FFT)是一种高效的计算离散傅里叶变换(Discrete Fourier Transform,DFT)及其逆变换的算法。
DFT 是一种将时间域信号转换到频率域的方法,常用于信号处理、图像处理等领域。
然而,当信号长度很长时,DFT 的计算复杂度较高,因此,为了加速计算,提出了快速傅里叶变换算法。
二、傅里叶变换的定义与性质傅里叶变换是一种将信号从时域转换到频域的方法。
对于一个信号f(t),其傅里叶变换结果为频谱F(ω),可以通过以下公式计算:F(ω) = ∫[f(t) * e^(-jωt) dt],其中积分范围为-∞到∞。
傅里叶变换具有以下性质:1.傅里叶变换是线性的,即满足线性性质的信号可以通过傅里叶变换分开。
2.傅里叶变换是可逆的,即频域信号可以通过傅里叶逆变换转换回时域信号。
3.傅里叶变换具有时域与频域之间的帕斯卡三角关系,即频谱的幅度与相位分别对应时域信号的幅度与相位。
三、快速傅里叶变换的算法原理快速傅里叶变换算法的原理是将DFT 分解成更小的子问题,并重复利用子问题的计算结果。
具体来说,如果将信号长度为N 的DFT 表示为:X_k = ∑[x_n * e^(-j2πnk/N)],其中n 为时域索引,k 为频域索引。
那么,如果将信号长度分解为2 的幂次方形式(如N = 2^m),则可以将DFT 分解为两个较短的DFT 的加权和,即:X_k = ∑[x_n * e^(-j2πnk/N)] = ∑[x_n * e^(-j2πn(k-m)/2^m)] + e^(-j2πkm/2^m) * ∑[x_n * e^(-j2πn(k+m)/2^m)]其中,第一个和式计算偶数项的DFT,第二个和式计算奇数项的DFT。
《快速傅里叶变换》PPT课件
此时y(n)能代表线性卷积结果。
用FFT计算y(n)步骤如下: (1)求
,N点
(2)求
,N点
(3)计算
;
(4)求
,N点
工作量分析 FFT计算工作量
(4.105)
用线性相位滤波器来比较直接计算线性卷积和FFT法 计算线性卷积时比值
(4.106)
运算量分析:
(1)x(n)与h(n)点数差不多,设M=L,
2
X1 k
x1
r
W rk N2
x
2r
W rk N2
r0
r0
(4.6)
N 1
N 1
2
2
X2 k
x2
r
W rk N2
x
2r
1
W rk N2
(4.7)
r 0
r0
应用系数的周期性
可得
N 1
X1
N 2
k
2 r 0
x1
r
W x r
N 2
k
N2
N 1 2
1
r0
比较可知,只要把DFT运算中的每一个系数
变成
,最后再乘常数1/N,则以上所有
按时间抽选或按频率抽选的FFT都可以拿来运算
IDFT。
不改FFT的程序计算IFFT方法: 对4.29式取共轭
因而
4.6 N为复合数的FFT算法 --混合基算法
当N不满足
时,可有以下几种办法
(1)将x(n)补一些零值点的办法
y(n)也是有限长序列,其点数为L+M-1。 2. 线性卷积运算量 乘法次数
线性相位滤波器满足条件
运算结构如图5.26,5.27所示 线性相位FIR滤波器的乘法运算量
《快速傅里叶变换(FFT) 第四章》
方法: 分解N为较小值:把序列分解为几个较短的 序列,分别计算其DFT值; 利用旋转因子WNk的周期性、对称性、可 约性进行合并、归类处理,以减少DFT的运 算次数。 k ( kn WN m WNN m WN ( nlN ) WNk lN ) n WN 周期性: N m m N m N m m m m 对称性:Wm WNm [W WN N WNN [WNNN m ]] WN WN 2 WN WN 可约性:W mN N W knmW kn / m W kn m kmn ,m 2 2
x ( r ) W x ( r )W x ( r ) W x ( r )W e (r W x r) xxr) W( r ) W (WW (r )W W e W (2 ) x x x(2 r 1)
W e
2 j 2 kr 2 kr N N /2
N 2
2 这样将N点DFT分解为两个N/2点的DFT
N X (k ) X 1 (k ) W X 2k(k ) k 0,1, 1 N X (k ) X 1 (k ) WN X 2 (k ) k 0,1, N 1 2 k X (kN X 1 (k ) WN X 2 (k ) k 0,1, 2 1 ) N2 k X (k N X 1 (k ) WN X 2 (k ) k 0,1, 1 N ) k X (k 2 N X 1 (k ) WN X 2 (k ) k 0,1, N 1 ) 2 k 2 X (k ) X (k ) W X (k ) k 0,1, 2 1
4.1 离散傅里叶变换的高效计算思路 DFT是信号分析与处理中的一种重要变换。但直接 计算DFT的计算量与变换区间长度N的平方成正比, 当N较大时,计算量太大,直接用DFT算法进行谱分 析和信号的实时处理是不切实际的。
课后习题及答案第4章快速傅里叶变换习题答案.pdf
和共轭反对称分量, 即
F(k)=X(k)+jY(k)=Fep(k)+Fop(k) 计算一次 N 点 IFFT 得到
f(n)=IFFT[F(k)]=Re[f(n)]+j Im[f(n)] 由 DFT 的共轭对称性可知
Re[f(n)]=IDFT[Fep(k)]=IDFT[X(k)]=x(n) j Im[f(n)]=IDFT[Fop(k)]=IDFT[jY(k)]=jy(n)
X (k + N ) = X1(k) −W2kN X 2 (k)
k = 0,1,L, N −1
由上式可解出
X1(k)
=
1 2
[
X
(k)
+
X
(k
+
N )]
X
2
(k)
=
1 2
[X
(k)
+
X
(k
+
N
)]W2−Nk
k = 0,1, 2,L, N −1
由以上分析可得出运算过程如下:
(1)由 X(k)计算出 X1(k)和 X2(k):
Xk=conj(Xk);
%对 Xk 取复共轭
xn=conj(fft(Xk, N))/N; %按照所给算法公式计算 IFFT
分别对单位脉冲序列、 长度为 8 的矩形序列和三角序列进行 FFT, 并调
用函数 ifft46 计算 IFFT 变换, 验证函数 ifft46 的程序 ex406.m 如下:
%程序 ex406.m
Tc = 2TF +1024 次复数乘计算时间 = 2 × 0.1536×10−3 +10×10−9 ×1024
= 0.317 44 ms 可实时处理的信号最高频率 fmax 为
快速傅里叶变换
快速傅⾥叶变换快速傅⾥叶变换快速傅⾥叶变换(FFT )是根据计算量的最⼩化原理来设计和实施离散傅⾥叶变换(DFT)计算的⽅法。
1965年,库利(T.W.Cooley )和图基(J.W.tukey )发表了著名的《计算机计算傅⾥叶级数的⼀种算法》论⽂。
从此掀起了快速傅⾥叶变换计算⽅法研究的热潮。
快速傅⾥叶变换(FFT )的出现,实现了快速、⾼效的信号分析和信号处理,为离散傅⾥叶变换(DFT)的⼴泛应⽤奠定了基础。
1.1离散傅⾥叶变换(DFT)的计算设x(n)是⼀个长度为M 的有限长序列,则定义x(n)的N 点离散傅⾥叶变换为∑-===10)()]([)(N n kn NW n x n x DFT k X 其中由于计算⼀个X(k)值需要N 次复乘法和(N-1)次复数加法,因⽽计算N 个X(k)值,共需N2次复乘法和N(N-1)次复加法。
每次复乘法包括4次实数乘法和2次实数加法,每次复加法包括2次实数加法,因此计算N 点的DFT 共需要4N2次实数乘法和(2N2+2N ·(N-1))次实数加法。
当N 很⼤时,这是⼀个⾮常⼤的计算量。
1.2减少DFT 计算量的⽅法减少DFT 的计算量的主要途径是利⽤k N W 的性质和计算表达式的组合使⽤,其本质是减少DFT 计算的点数N 以便减少DFT 的计算量。
k N W 的性质:(1)对称性: (2)周期性: (3) 可约性: (4) 特殊点:选择其中⼀个证明N N j k N j N k N j N k N e e e W 222)2(22πππ--+-+==ππj k N j e e --=2k N j e π2--=k N W -=FFT 算法是基于可以将⼀个长度为N 的序列的离散傅⾥叶变换逐次分解为较短的离散傅⾥叶变换来计算这⼀基本原理的。
这⼀原理产⽣了许多不同的算法,但它们在计算速度上均取得了⼤致相当的改善。
0,1,,1k N =-()*nk nk N N W W -=()()nk N n k n N k N N NW W W ++==nk mnk N mN W W =//nk nk m N N mW W =01N W =/21N N W =-(/2)k N k N NW W +=-在这⾥讨论两类基本的FFT 算法。
第四章 快速傅里叶变换
运 算
X[3] 2WN0 3WN3 3WN6 2WN9 1 j
复数加法 N(N-1)
复数乘法 N 2
效 率
?
1.将长序列DFT分解为短序列的DFT 由于DFT的运算量与N2成正比,N越小,
DFT的运算量越少。所以如果把一个长序列 的DFT能分解为短序列的DFT的组合,则显 然可取得减少运算工作量的效果。
N 1
X (k) DFT[x(n)]
x(n)W
kn N
n0
N 1
N 1
x(n)WNkn+ x(n)WNkn
n0 n为偶数
n0 n 为奇数
N / 21
N / 21
= x(2r)WN2rk x(2r 1)WN(2r1)k
r 0
r 0
N / 21
N / 21
= x1 (r)WN2rk WNk x2 (r)WN2rk
X 3 (k) WNk / 2 X 4 (k)
k 0,1, , N 1 4
将系数统一为以N为周期,即
,可得
Wk N/2
WN2k
X X
1 1
(k (k
) X 3 (k) WN2k X 4 (k) N / 4) X 3 (k) WN2k
X
4
(k
)
k 0,1, , N 1 4
同样,对也可进行类似的分解。一直分解
第4章 快速傅里叶变换
4.1 快速傅里叶变换
4点序列{2,3,3,2} DFT的计算复杂度 如
N 1
X [k] x[k]WNkn
何 提
n0
高
X[0] 2WN0 3WN0 3WN0 2WN0 10
DFT
X[1] 2WN0 3WN1 3WN2 2WN3 1 j
数字信号处理第四章_快速傅里叶变换
因此
X (k ) X 1 (k ) WN k X 2 (k ) N X (k ) X1 (k ) WN k X 2 (k ) 2
k 0,1, ,
N 1 2
因此:整个 X(k) 的计算,可以分解为前、后半部分的运 算。而只要求出前一半,就可以由上式求出整个序列。 12
N 1 2 r 0 N 1 2 r 0
X1 (k) = x(2r)WN 2kr
r=0
N -1 2
则
N X 1 (k ) X 1 ( l ) 2
x(2r )W
rl
N r( l ) 2
N 2
x(2r )W
WN
2 r N 2
r
N 2
N 2
W N rl
2
x(2r )W
r=0 r=0
N -1 2
N -1 2
r 0,1,... N / 2 1 k= 0,1,...N-1
奇数取样点DFT为:
X 2 ( k ) x( 2r 1)W N 2 kr x2 (r)W N 2 kr
r 0 r 0 N 1 2 N 1 2
① k 的整个范围为 0~(N-1),而X1(k)、X2(k) 是由 N/2 个样点形成的 DFT,x(2r) 和 x(2r+1)的长度为 N/2; ② 由这两个偶数和奇数 N/2 个时域样值可以计算出前 N/2 个 DFT 系数, 也可以计算出后 N/2 个 DFT 系数。 ③ 问题:这前后 N/2 个 DFT 有无关系?k 取 N/2 ~(N-1) 时, X1(k)、 X2(k)、WN 情况如何?
N个X (k) (N点DFT)
4N
4N 2
2N+2 (N – 1)=2 (2N – 1)
数字信号处理_程佩青_PPT第四章
主要内容
DIT-FFT算法 DIF-FFT算法 IFFT算法 Chirp-z算法 线性卷积的FFT算法
§4.0 引言
FFT: Fast Fourier Transform
1965年,Cooley&Turky 发表文章《机器计算傅 里叶级数的一种算法》,提出FFT算法,解决 DFT运算量太大,在实际使用中受限制的问题。 FFT的应用。频谱分析、滤波器实现、实时信 号处理等。 DSP芯片实现。TI公司的TMS 320c30,10MHz 时钟,基2-FFT1024点FFT时间15ms。
又WN
k
N 2
W
N /2 N
W W
k N
k N
k X (k ) X1 (k ) WN X 2 (k ),k 0,1,2,...N / 2 1 (2) X ( N k ) X ( N k ) W ( N / 2 k ) X ( N k ) 1 N 2 2 2 2 k X1 (k ) WN X 2 (k ),k 0,1,2,...N / 2 1
n为偶
n为奇
N / 2 1
rk k rk x ( r ) W W x ( r ) W 1 N /2 N 2 N /2 r 0 r 0 X1 ( k )
N / 2 1
2 rk rk (这一步利用: WN WN /2
) r , k 0,1,...N / 2 1
N为2的整数幂的FFT算法称基-2FFT算法。
将序列x(n)按n的奇偶分成两组:
x1 (r ) x(2r ) ,r 0, 1, 2, ...N/ 2 1 x2 (r ) x(2r 1)
第4章傅里叶变换ppt课件
23
例题4.6 求正弦波的频谱
解:
x(t)si n0tej0t
ej0t 2j
1 a1 2 j
a-1
- 1 2j
X(j)j(0)j(0)
可编辑课件PPT
24
ej0t ej0t
x(t)co0st 2
a1
1 2
a-1
1 2
X (j ) ( 0 ) ( 0 )
本例的结论在信号调制理论中有着广泛的应用
可编辑课件PPT
12
例题4.2 求 x(t)(t) 的频谱。
解
X(j)x(t)ejtdt (t)ejtdt
(t)ej0dt1
可编辑课件PPT
13
单位冲激信号的频谱是常数1,或者说,在所有 的频率点上,频谱的值都是恒定的。
这个例子的物理含义非常广泛,它意味着,尖脉 冲信号的频谱非常宽,会对处于不同接收频率的电子 设备产生干扰。
X(jk0)ejk0t
0
面X 积 (jk0)ej k0t 0 k 0
X(j)ejtd
X(jk0)ejk0t0
k
可编辑课件PPT
10
0 0
傅里叶反变换
x(t)21 X(j)ejtd
一种分解
可编辑课件PPT
11
傅里叶变换
频谱
傅里叶正变换
X(j) x(t)ejtdt
F
F1
x(t)X(j) X(j)x(t)
可编辑课件PPT
2
抽样函数或者称为采样函数:
Sa(x) sinx x
S(ax)S(a x) 偶函数
通过罗必塔法则,可以得到
Sa(0) 1
Sa()0
x 抽样函数右边的第一个过零点在
FFT
问题的提出
解决问题的思路与方法(减少运算量的途径) 基2按时间抽取FFT算法 基2按频率抽取FFT算法 FFT算法的实际应用
1
数字信号处理中DFT运算的用处
有限长序列在数字技术中占有很重要的地位,它的一个重 要特点是其频域也可以离散化,即离散傅里叶变换(DFT) ① 在FIR滤波器设计中,经常要由h(n)求H(k),或从H(k)求h(n); ② 因为信号序列的DFT本身就是信号频谱的采样集,所以DFT 可以直接用于分析信号的频谱。
8
则 x(n) 的DFT为
kn X (k ) x(n) WN n 0 N 1
N / 2 1
r 0
2k r x(2r ) WN
N / 2 1
r 0
k (2 r 1) x(2r 1) WN
由于
N / 2 1
r 0
x1 (r ) W
2k r N
W
k N
N / 2 1
X 3 (k ) X 4 (k )
N / 4 1
s 0 s 0
ks x3 ( s) WN / 4 DFT x3 ( s ) , 0 k N / 4 1 ks x4 ( s) WN / 4 DFT x4 ( s ) , 0 k N / 4 1
X(0) X(1) X(2) X(3)
x1 (r )
x(4) x(6) x(1)
x2 (r )
x(3) x(5) x(7)
W
1 N
-1
X(4) X(5) X(6) X(7)
2 WN
-1
-1 -1
W
3 N
第四章-傅里叶变换
离散傅里叶级数涉及到的都是有限项求和,因此只要 ~x(n) 是有 界的,即对所有的 n,都有 |~ x(n)|,则 DFS 的收敛不存在任 何问题。或者说,只要在一个周期内 ~x(n) 的能量是有限的,即
则 DFS 一定收敛。
|~x(n)|2
nN
1. 连续和离散傅里叶级数
周期信号用截短了的傅里叶级数近似:
如果把周期信号 ~x(t)和 ~x(n) 分别展成它们的 CFS 和 DFS,并把
无限项的 CFS 和有限项的 DFS 在某一处截断,分别得到:
~xM(t)
M
X(kΩ0)ejkΩ0t
kM
~ x M (n )2 M 1 1 k M M X ~ (k0 )ej k 0 n , (2 M 1 ) N
nN
这两个公式表明,任意周期序列 ~x(n)都可以表示为与其重复频率 ω0 成谐波关系的一系列复正弦序列 ejω0n 的线性组合,每个 ejω0n 的复数幅度就是离散傅里叶级数的系数 X(kω0)。 CFS 与 DFS 的区别: CFS 是一个无穷级数,而周期为 N 的周 期序列的 DFS 却是一个有限级数,它只有 N 项,即:
(2N1+1)
…
…
─N
0
N
k
1.连续和离散傅里叶级数
周期信号频谱的特点: 1. 连续时间和离散时间周期信号的频谱都是离散频谱,两条
谱线之间的间隔等于重复频率( Ω0 =2π/T 或 ω0 =2π/N)。 2. 连续时间周期信号包含无穷多条谱线,即有无穷多个成谐
波关系的复正弦分量组成;离散时间周期信号的谱线具有 周期性,在频域上为 2π,在 k 域上为 N。
x(t) akejkt
k
x(n) akejkn
快速傅里叶变换
前半部分
k0,1, ,N21
X ( N /2 k ) X 1 ( k ) W N k X 2 ( k )
后半部分
蝶形运算流图符号
说明:
X1(k)
X1(k)W N kX2(k)
(1) 左边两路为输入 (2) 右边两路为输出
W
k N
X2(k)
X1(k)W N kX2(k)
(3) 中间以一个小圆表示加、
X(k)X1(k)W N kX2(k)
k0, ,N/21
X(kN/2)X1(k)W N kX2(k)
得到X1(k)和X2(k)需要: 复乘:(N/2)2+ (N/2)2次 = 32次 复加:N/2(N/2-1)+N/2(N/2-1) =12+12 =24次
此外,还有4个蝶形结,每个蝶形结需要1次复乘,2次复加。 一共是:复乘4次,复加8次。
W
N N
k
W
N
n
k
W
n N
N
W
N
n
k
周 期 性 W N n k W N ( N n ) k W N n ( N k )
可 约 性 W N n k W m m N n k WNnk WNnk/m /m
j 2 m nk
e mN
j2N
e N2
e j
1
特 殊 点 : W N 0 1 W N N / 2 1 W N ( k N / 2 ) W N k
偶序列 奇序 (l0 ..列 N 4 . 1 )此l处 0 ,1 ,
那么,X1(k)又可表示为
N /4 1
N /4 1
X 1 (k ) x 1 (2 l)W N 2 l/2 k x 1 (2 l 1 )W N (2 /l2 1 )k
快速傅里叶变换
第四章 快速傅里叶变换(FFT )快速傅里叶变换并不是一种新的变换,而是离散傅里叶变换的一种快速算法。
DFT 的计算在数字信号处理中非常有用,但是由于DFT 的计算量较大,即使采用计算机也很难对问题进行实时处理,通过引入其快速算法FFT ,使DFT 的计算大大简化,运算时间一般可缩短一、二个数量级。
4.1 FFT 算法的基本思想一、直接计算DFT 的问题设)(n x 为N 点有限长序列,其DFT 为:10)()]([)(10-≤≤==∑-=N k W n x n x DFT k X N n knNIDFT 为:10)(1)]([)(10-≤≤==∑-=-N n W k X N k X IDFT n x N k knN二式的差别仅在于N W 的指数符号不同,以及相差一个常数因子N /1,所以,我们只对DFT 正变换的算法进行讨论。
将)(k X 可以展开如下:)1()2()1()0()1()1()2()1()0()2()1()2()1()0()1()1()2()1()0()0()1)(1()2)(1()1)(1()0)(1()1(2)2(2)1(2)0(2)1(1)2(1)1(1)0(1)1(0)2(0)1(0)0(0-++++=--++++=-++++=-++++=--------N x W x W x W x W N X N x W x W x W x W X N x W x W x W x W X N x W x W x W x W X N N NN N N NN NN NNNNN NNNN N N N N N一般来说,)(n x 和knN W 都是复数,因此,完成每一个频率分量的计算需要作N 次复数乘法和1-N 次复数加法,完成)(k X 的N 个频率分量的计算需要作2N 次复数乘法和)1(-N N 次复数加法。
我们知道,复数运算实际上是由实数运算来完成的。
一次复数乘法包括四次实数乘法和二次实数加法,即:)()())((ad bc j bd ac jd c jb a ++-=++一次复数加法包括二次实数加法,即:)()()()(d b j c a jd c jb a +++=+++因此,完成一个)(k X 需要N 4次实数乘法和)12(2)1(22-=-+N N N 次实数加法,整个DFT (N 点)(k X )运算需要24N 次实数乘法和)12(2-N N 次实数加法。
第4章 快速傅里叶变换(FFT)
第4章 快速傅里叶变换(FFT)
4.2.2 时域抽取法基2FFT基本原理
先设序列点数为N=2M,M为整数。如果不满足这个条 件,可以人为地加上若干零值点,使之达到这一要求。 这种N为2的整数幂的FFT称基-2 FFT。
(一)N/2点DFT
按n的奇偶把x(n)分解为两个N/2点的子序列
第4章 快速傅里叶变换(FFT)
(3)对X1(k)和X 2 (k)进行蝶形运算,前半部为
X(0)~X(3),后半部分为 X(4) ~ X(7) 整个过程如图4.2.2 所示:
x(0 )
X1(0 )
X(0 )
x(2 )
N/2点 X1(1 )
X(1 )
x(4 )
X1(2 )
X(2 )
DFT
x(6 )
X1(3 )
WNk
X2(k)
X(N 2
k)
X1(k) WNk
X 2 (k )
(后一半)
计算X(k)包含N/2个蝶形运算和两个N/2点DFT运算
计算工作量分析
第4章 快速傅里叶变换(FFT)
(1)1个N/2点的DFT运算量:
复乘次数: ( N )2 N 2 复加次数: N ( N 1)
24
22
(2)两个N/2点的DFT运算量:
例如,N=8时的DFT可分解为四个N/4的DFT, 具体步骤如下:
(1) 将原序列x(n)的“偶中偶”部分:
x3(l) x1(r) x(n) x3(0) x1(0) x(0) x3(1) x1(2) x(4)
第4章 快速傅里叶变换(FFT)
第4章 快速傅里叶变换(FFT)
4.1 引言 4.2 基2FFT算法 4.3 进一步减少运算量的措施
第4章 快速傅里叶变换(FFT)
A(2) A(3) A(4) A(5) A(6)
WN
0
W
2 N
A(4) A(5)
WN
0
X(4) X(5) X(6) A(7) X(7)
W
0 N
WN
1
A(6)
0 WN
WN
WN
3
2
A(7)
W
2 N
A(7)
图4.2.4 N点DIT―FFT运算流图(N=8)
第4章 快速傅里叶变换(FFT)
4.2.3 DIT―FFT算法与直接计算DFT运算量的比较
N=23=8时的各级旋转因子表示如下:
L=1时,WpN=WJ N/4=WJ2L, J=0 L=2时, WpN =WJ N/2=WJ2L, J=0,1 L=3时, WpN =WJN=WJ2L, J=0,1,2,3 对N=2M的一般情况,第L级的旋转因子为
WNp W2J L, J 0,1, 2, , 2 L1 1 2 L 2 M 2 L M N 2 L M W W
第4章 快速傅里叶变换(FFT)
第4章 快速傅里叶变换(FFT)
4.1 引言
4.2 基2FFT算法
4.3 进一步减少运算量的措施
4.4 分裂基FFT算法
4.5 离散哈特莱变换(DHT)
第4章 快速傅里叶变换(FFT)
4.1 引言
DFT是信号分析与处理中的一种重要变换。因直 接计算DFT的计算量与变换区间长度N的平方成正比, 当N较大时,计算量太大,所以在快速傅里叶变换(简 称FFT)出现以前,直接用DFT算法进行谱分析和信号 的实时处理是不切实际的。直到1965年发现了DFT的 一种快速算法以后,情况才发生了根本的变化。
P N J N 2 L M
4-快速傅里叶变换解析
k 0,1,, N 1 2
X
k
N 2
X1 (k )
WNk
X 2 (k)
k 0,1,
, N 1 2
x1(0 )=x(0 ) x1(1 )=x(2 )
X1(0 )
X1(1 ) N点
X(0 ) X(1 )
x(2r x(2r
) x1(r) 1) x2
从上面的统计可以看到,直接计算DFT,乘法次数和加法 次数都是和N2成正比的,当N很大时,运算量是很可观的,有 时是无法忍受的。
6
第4章 快速傅里叶变换(FFT)
例3-1 根据式(3-1),对一幅N×N点的二维图像进行DFT 变换,如用每秒可做10万次复数乘法的计算机,当N=1024时, 问需要多少时间(不考虑加法运算时间)?
X1(k) WNk X 2 (k) ,
k 0,1,, N 1 2
13
第4章 快速傅里叶变换(FFT)
X (k) X1(k) WNk X 2 (k) , k 0,1,
, N 1 2
(4-11)
X
k
N 2
X1
k
N 2
W
k
N 2
22
(2)两个N/2点的DFT运算量:复乘次数: N 2
2
复加次数: N ( N 1)
2
(3)N/2个蝶形运算的运算量:复乘次数: N
复加次数:
2 2
N
N
2
总共运算量:
复乘: 复加:
N2 N
N ( N 1)/ 2 N 2
第四章 快速傅里叶变换
X (k ) DFT [ x(n)] x(n)WNnk
n 0
N 1
n 0 n为偶数
nk x ( n ) W N
N 1
n 0 n为奇数
nk x ( n ) W N
N 1
9
X (k )
n 0 n为偶数
N 1
x(n)W
nk N
n 0 n为奇数
N 1
式中,X1(k)和X2(k)分别是x1(n)和x2(n)的N/2的DFT。 另外,式中k的取值范围是:0,1, …,N/2-1 。
10
k X ( k ) X ( k ) W 因此, 只能计算出X(k)的前一半值。 1 N X 2 (k )
后一半X(k) 值, N/2 , N/2 +1, …,N-1 ?
结论:当N很大时,其运算量很大,对实时性很强的信号 处理来说,要求计算速度快,因此需要改进DFT的计算 方法,以大大减少运算次数。
6
4.2.2 减少运算工作量的途径
nk 主要原理是利用系数 WN 的以下特性对DFT进行分解:
(1)周期性 (2)对称性 (3)可约性 另外,
W
( n N ) k N
18
以8点为例第二次按奇偶分解
概念:信号流图
19
算法原理
对此例N=8,最后剩下的是4个N/4= 2点的DFT,2点
DFT也可以由蝶形运算来完成。N=2
X (k ) x(n)WNnk
n 0
N 1
k 0,1
蝶形运算
0 X (0) x(n)WNnk x(0) x(1) x(0) WN x(1) 0 X (1) x(n)WNnk x(0) x(1) x(0) WN x(1) n 0 n 0 N 1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
两个4点DFT组成8点DFT
按照这个办法,继续把N/2用2除,由于N=2M , 仍然是偶数,可以被2整除,因此可以对两个 N/2 点 的 DFT 再 分 别 作 进 一 步 的 分 解 。 即 对 {G(k)}和{H(k)}的计算,又可以分别通过计算 两个长度为N/4=2点的DFT,进一步节省计算 量,见图。这样,一个8点的DFT就可以分解 为四个2点的DFT。
x ( 2r ) w
2 rk N
w
k N
x(2r 1)w
2 rk N
因为
故
2 w Nn e
2 j 2n N
j
e
2 n N 2
n wN
2
X k
N / r
rk k x(r )W N WN
N / r
rk x(r )W N
从上面的分析看到,在DFT计算中,不论是乘法和 加法,运算量均与N2成正比。因此,N较大时,运 算量十分可观。例,计算N=10点的DFT,需要100 次复数相乘,而N=1024点时,需要1048576(一百 多万)次复数乘法,如果要求实时处理,则要求 有很高的计算速度才能完成上述计算量。 反变换IDFT与DFT的运算结构相同,只是多乘 一个常数1/N,所以二者的计算量相同。
FFT产生故事
加文(Garwin)在自已的研究中极需要一个计算付里叶变换的 快速方法。他注意到图基(J.W.Turkey)正在写有关付里叶变 换的文章,因此详细询问了图基关于计算付里叶变换的技术 知识。图基概括地对加文介绍了一种方法,它实质上就是后 来的著名的库利(Cooley J.W)图基算法。 在加文的迫切要求下,库利很快设计出一个计算机程序。 1965年库利--图基在<计算数学>、Mathematic of Computation 杂志上发表了著名的“机器计算付里级数的一 种算法”文章,提出一种快速计算DFT的方法和计算机程序-揭开了FFT发展史上的第一页。 促使FFT算法产生原因还有1967年至1968年间FFT的数字硬件 制成,电子数字计算机的条件,使DFT的运算大简化了。
N 2 偶数 n 0
nk x ( n) wN
奇数 n 1
nk x ( n) wN
N 1
N / 2 1
r 0
x ( 2r ) w
2 rk N
N / 2 1 r 0
x(2r 1)w
N / 2 1 r 0
( 2 r 1) k N
N / 2 1
r 0
由于这种方法每一步分解都是按输入时间序列是属 于偶数还是奇数来抽取的,所以称为“按时间抽取法 ”或“时间抽取法”。
时间抽取法FFT的运算特点:
(1)蝶形运算 (2)原位计算 (3)序数重排 (4)蝶形类型随迭代次数成倍增加
(1)蝶形运算 对于N=2M ,总是可以通过M次分解最后成为2点的 DFT运算。这样构成从x(n)到X(k)的M级运算过程。 从上面的流图可看到,每一级运算都由N/2个蝶形运 算构成。因此每一级运算都需要N/2次复乘和N次复加 ,这样,经过时间抽取后M级运算总共需要的运算:
数字信号处理
第四章--快速傅立叶变换
FFT: Fast Fourier Transform
4-1 引言
• 有 限 长 序 列 通 过 离 散 傅 里 叶 变 换 (D F T) 将 其 频 域 离 散 化 成 有 限 长 序 列 . 但 其 计算 量 太 大, 很 难 实 时 地 处 理 问 题 , 因 此 引 出 了 快 速 傅 里 叶 变 换(FFT) . • FFT 并 不 是 一 种 新 的 变 换 形 式 ,它 只 是 DFT 的 一 种 快 速 算 法。并 且 根 据 对 序 列分解与选取方法的不同而产生了 FFT 的 多 种 算 法 。FFT的出现,使DFT的运 算大大简化,运算时间缩短一~二个数量级, 使DFT的运算在实际中得到广泛应用。
N2=220=1048576次,即一百多万次的复乘运算
这对实时性很强的信号处理(如雷达信号处理)来讲,它对计 算速度有十分苛刻的要求-->迫切需要改进DFT的计算方法, 以减少总的运算次数。 • 例2:石油勘探,24道记录,每道波形记录长度5秒,若每 秒抽样500点/秒,
每道总抽样点数=500*5=2500点
w
r N / 2 k N 2
(k N ) 2
w
rk N
2
得:
WN
k WN
N k X (k ) Gk WN H k , 2
N k 0,1, 1 2
可见,一个N点的DFT被分解为两个N/2点的DFT,这两个 N/2点的DFT再合成为一个N点DFT.
X k Gk W H k ,
2点
2点
2点
N/4点
由四个2点DFT组成 8点DFT
最后剩下的是2点DFT,它可以用一个蝶形结表示:
X (0) x(0) W x(1) x(0) W x(1)
0 2 o N o X (1) x(0) W21 x(1) x(0) WN x(1)
这样,一个8点的完整的按时间抽取运算的流图
k N
N k ,,,
N k 0,1, 1 2
N k WNk H k , X (k ) G 2
依此类推,G(k)和H(k)可以继续分下去,这种按时间抽 取算法是在输入序列分成越来越小的子序列上执行DFT 运算,最后再合成为N点的DFT。
蝶形信号流图
先从一个特殊ห้องสมุดไป่ตู้况开始,假定N是2的整数次方,
N=2M,M:正整数
首先将序列x(n)分解为两组,一组为偶数项,一组为奇 数项,
x(2r ) x1 (r ) x(2r 1) x 2 (r )
r=0,1,…,N/2-1
将DFT运算也相应分为两组:
nk x(k ) DFT x(n) x(n) wN N 1 n 0
将G(k)和H(k) 合成X(k)运算可归结为:
a bW a bW
a
W
a+bW
a
a+bW
W
b
-W (a)
a-bW
b
(b)
-1
a-bW
蝶形运算 的简化
图 (a)为实现这一运算的一般方法,它需 要两次乘法、两次加减法。考虑到-bW 和bW两个乘法仅相差一负号,可将图 (a) 简化成图2.7(b),此时仅需一次乘法、两 次加减法。图 (b)的运算结构像一蝴蝶通 常称作蝶形运算结构简称蝶形结,采用 这种表示法,就可以将以上所讨论的分 解过程用流图表示。
n 0
一般,x(n)和wnkN都是复数,因此,每计算一个X(k)值 ,要进行N次复数相乘,和N-1次复数相加,X(k)一共有N个 点,故完成全部DFT运算,需要N2次复数相乘和N(N-1)次复 数相加,在这些运算中,乘法比加法复杂,需要的运算时间多 ,尤其是复数相乘,每个复数相乘包括4个实数相乘和2个实数 相加,例
X (k )
N 4
N 2 ( ) 2
X (k )
=
N 2
2
X (k ) N 4 N 2 N 2 N 2 N 2 N ( ) + ( ) + ( ) + ( ) = 4 4 4 4 4 这样一直分下去,剩下两点的变换。
N 4 N 4 2
按时间抽取的FFT(N点DFT运算的分解):DIT—FFT
18
N=23=8 的例子。
x(0) x(2) x(4) x(6)
G(0)
X(0) X(1) X(2)
X(3)
4点 DFT
G(1) G(2) G(3)
x(1) x(3) x(5) x(7)
H(0)
-1
X(4)
WN1
-1
N/2点 DFT
H(1) H(2) H(3)
X(5)
-1
WN2 WN3
-1
X(6)
N 1 n 0
nk nk nk nk X ( k ) { Re [ x( n )]Re wN I m [ x( n )] I m [ wN ] j Re [ x( n )] I m wN I m [ x( n )]Re wN }
又每个复数相加包括 2个实数相加,所以,每计算一个 X(k)要进行4N次实数相乘和2N+2(N-1)=2(2N-1)次实 数相加,因此,整个DFT运算需要4N2 实数相乘和2N(2N-1) 次实数相加。
x(n) X (k ) x(n)W
DFT n 0 N 1
IDFT
N 1
kn N
k 0,1, N 1
1 kn n 0,1, N 1 X (k ) x(n) X (k )WN N k 0
例子
• 例1:当N=1024点时,直接计算DFT需要:
wN
wN
wN
又如
w
N /2 N
1,
因此
( k wNk N / 2) wN
利用这些周期性和对称性,使DFT运算中有些项可合并; nk 2)利用 wN 的周期性和对称性,把长度为N点的大点数的 DFT运算依次分解为若干个小点数的DFT。因为DFT的计算量 正比于N2,N小,计算量也就小。 FFT算法正是基于这样的基本思想发展起来的。它有多种形 式,但基本上可分为两类:时间抽取法和频率抽取法。
4-2 直接计算DFT算法存在的问题 及改进途径
一、直接计算DFT计算量
问题提出: 设有限长序列x(n),非零值长度为N,计算 对x(n)进行一次DFT运算,共需多大的运算工作量?