数字信号处理 第4章 快速傅里叶变换(FFT)

合集下载

数字信号处理课件第4章快速傅里叶变换FF

数字信号处理课件第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是频域的一种快速 计算方法。

数字信号处理DSP第4章

数字信号处理DSP第4章
G[3] 1
k 0,1, , N 1
2
13
4.2 按时间抽取(DIT)的基2–FFT算法
将系数统一为 WNk 2 WN2k ,则可得
x[0]
N 4点
x[4]
DFT
G[0]
X [0]
G[1]
X [1]
x[2]
N 4点
WN0
x[6]
DFT
WN2
G[2]
1 G[3]
1
X [2] X [3]
x[1]
N 4点
X m1[i] WNr X m1[ j] , X m1[i] WNr X m1[ j]
m 1, 2 ,
每一个蝶形需要一次复数乘法和两次复数加法。
17
4.2 按时间抽取(DIT)的基2–FFT算法
N点的DIT-FFT计算量为
复数乘法:
1
N 2
log2
N
N 2
复数加法:
2
N 2
log2
N
N
例: 如果每次复数乘法需要100us,每次复数加法需要20us,来 计算N=1024点DFT,则需要
12
4.2 按时间抽取(DIT)的基2–FFT算法
同理
( N 4)1
( N 4)1
G[k] DFT[g[r]]
g[2l]WN2lk2
g[2l 1]WN(22l1)k
l 0
l 0
( N 4)1
( N 4)1
g[2l]WNlk 4 WNk 2
g[2l 1]WNlk 4 ,
l 0
l 0
k 0,1,
(3) WN0 WN4 WN8 WN12 WN16 WN20 WN24 WN28
或 WN4i i 0,1, 2, 3, 4, 5, 6, 7 (dm 1)

数字信号处理第4章快速傅里叶变换FFT

数字信号处理第4章快速傅里叶变换FFT

X 6(k)
x6 (l)WNkl/ 4 DFT [x6(l)]
i0
x5 (l ) x6 (l )

x2 x2
(2l (2l
)
1)

,
l

0,1, N
/
4
1
(4.2.11)
课件
12
第4章 快速傅里叶变换(FFT)
x(0 )
N/4点 X3(0 )
x(4 )
DFT X3(1 )
e N
j 2 m
e N
WNm
(4.2.2)
其对称性表现为
WNm WNN m 或者 [WNN m ] WNm
m N
WN 2
WNm
课件
4
第4章 快速傅里叶变换(FFT)
4.2.2 时域抽取法基2FFT基本原理 FFT 算 法 基 本 上 分 为 两 大 类 : 时 域 抽 取 法
课件
21
第4章 快速傅里叶变换(FFT)
x(0 )
N/4点
X(0 )
x(1 )
DFT
X(4 )
x(2 )
W
0 N
N/4点
X(2 )
x(3 )
W
2 N
DFT
X(6 )
x(4 )
W
0 N
N/4点
X(1 )
x(5 )
W
1 N
DFT
X(5 )
x(6 )
W
2 N
W
0 N
N/4点
X(3 )
x(7 )
W
3 N
W
X
(k

N 2
)

数字信号处理课后答案+第4章(高西全丁美玉第三版)

数字信号处理课后答案+第4章(高西全丁美玉第三版)

6*. 按照下面的IDFT算法编写MATLAB语言 IFFT程 序, 其中的FFT部分不用写出清单, 可调用fft函数。 并分 别对单位脉冲序列、 矩形序列、 三角序列和正弦序列进行 FFT和IFFT变换, 验证所编程序。
解: 为了使用灵活方便, 将本题所给算法公式作为函 数编写ifft46.m如下: %函数ifft46.m %按照所给算法公式计算IFET function xn=ifft46(Xk, N) Xk=conj(Xk); %对Xk取复共轭 xn=conj(fft(Xk, N))/N; %按照所给算法公式计算IFFT 分别对单位脉冲序列、 长度为8的矩形序列和三角序列 进行FFT, 并调用函数ifft46计算IFFT变换, 验证函数 ifft46的程序ex406.m如下:
快速卷积时, 需要计算一次N点FFT(考虑到H(k)= DFT[h(n)]已计算好存入内存)、 N次频域复数乘法和 一次N点IFFT。 所以, 计算1024点快速卷积的计算时间Tc 约为
Fs <
1024 = 15 625 次 /秒 65536 × 10−6
Fs 15625 = = 7.8125 kHz 2 2
1 x ( n) = IDFT[ X ( k )] = [DFT[ X * ( k )]]* N
%程序ex406.m %调用fft函数计算IDFT x1n=1; %输入单位脉冲序列x1n x2n=[1 1 1 1 1 1 1 1]; %输入矩形序列向量x2n x3n=[1 2 3 4 4 3 2 1]; %输入三角序列序列向量x3n N=8; X1k=fft(x1n, N); X2k=fft(x2n, N); X3k=fft(x3n, N); %计算x1n的N点DFT %计算x2n的N点DFT %计算x3n的N点DFT

数字信号处理第四章快速傅里叶变换PPT课件

数字信号处理第四章快速傅里叶变换PPT课件

2N (2N – 1)
复乘的加
法次数
4
4.2 FFT:直接计算 DFT 的问题及改进
如 N=512、1024 和 8192 时,DFT 的乘法运算 N2 = 5122 = 218 = 262144(26万次) N2 = 10242 = 220 = 1048576(105万次) N2 = 81922 = 226 = 67108864(6千7百万次)
Dr. James W. Cooley
Worked at IBM Watson Research Center in Yorktown Heights, N.Y..After his retirement from IBM in 1991, he joined the Electrical Engineering Department at the University of Rhode Island.
x(0)
x(2)
-1
x(1)
x(3)
-1 W41
X(0) X(0)x(0) x(2)x(1) x(3)
X(1) X(1)x(0) x(2)x(1) x(3)W41 只需要 1
-1 X(2) X(2)x(0) x(2)x(1) x(3)
次复数乘
-1
X(3) X(3)x(0) x(2)x(1) x(3)W41
4.1 FFT :引言
FFT: Fast Fourier Transform 1965 James W. Cooley 和 John W. Tukey 在 《》
(《Mathematics of Computation》)上发表了“ 一种 用机器计算复序列傅立叶级数的算法(An algorithm for the machine calculation of complex Fourier series)” 论文。 自此之后,新的算法不断涌现。一种是对N等于 2 的整 数次幂的算法,如基 2 算法,基 4 算法。另一种是N不 等于 2 的整数次幂的算法,例如 Winagrad 算法,素因 子算法。

数字信号处理 第4章 快速傅里叶变换(FFT)-资料

数字信号处理  第4章  快速傅里叶变换(FFT)-资料

x[0]
x[2]
W20
x[1]
x[3] W20
X1[0]
2点DFT X1[1] 1 X2[0]
2点DFT X2[1] 1
W40
1
W41
1
X [0] X [1] X [2] X [3]
4点基2时间抽取FFT算法流图
x[0]
x[2]
W40
x[1]
x[3]
W40
X1[0]
X1[1] 1
X2[0]
W40 1
W80 W80
2点DFT XX111[11[]1]
1 X4X1点21[20[]D0W] FW80T40
2点DFT XX121[21[]1W] W82411
1
1
xx[[11]]
XX212[10[]0]
xx[[35]] xx[[53]] xx[[77]]
W80 W80
2点DFT XX212[11[]1]
X2[1]
W41
1
1
X[0] X[1] X[2] X[3]
X[8mX点[m4基]]2X时X11[[间mm]]抽WW取88mmFXXF22[[Tmm算]],, 法mm流 00图,,11,,22,,33
x[0]
X1[0]
X [0]
x[2]
X1[1]
X [1]
x[4]
4点DFT
X1[2]
X [2]
x[6]
N=2
x[k]={x[0], x[1]}
X[0] x[0] W20 x[1] X [1] x[0] W21x[1] x[0] W20 x[1]
x[0]
X [0]
x[1] W20
-1
X [1]

《快速傅里叶变换(FFT) 第四章》

《快速傅里叶变换(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算法进行谱分 析和信号的实时处理是不切实际的。

详解FFT(快速傅里叶变换FFT

详解FFT(快速傅里叶变换FFT

knN W N N第四章 快速傅里叶变换有限长序列可以通过离散傅里叶变换(DFT)将其频域也离散化成有限长 序列.但其计算量太大,很难实时地处理问题,因此引出了快速傅里叶变换 (FFT). 1965 年,Cooley 和 Tukey 提出了计算离散傅里叶变换(DFT )的快 速算法,将 DFT 的运算量减少了几个数量级。

从此,对快速傅里叶变换(FFT ) 算法的研究便不断深入,数字信号处理这门新兴学科也随 FFT 的出现和发 展而迅速发展。

根据对序列分解与选取方法的不同而产生了 FFT 的多种算 法,基本算法是基2DIT 和基2DIF 。

FFT 在离散傅里叶反变换、线性卷积 和线性相关等方面也有重要应用。

快速傅里叶变换(FFT )是计算离散傅里叶变换(DFT )的快速算法。

DFT 的定义式为N −1X (k ) = ∑ x (n )W NR N (k )n =0在所有复指数值 W kn 的值全部已算好的情况下,要计算一个 X (k ) 需要 N 次复数乘法和 N -1 次复数加法。

算出全部 N 点 X (k ) 共需 N 2次复数乘法和 N ( N − 1) 次复数加法。

即计算量是与 N 2成正比的。

FFT 的基本思想:将大点数的 DFT 分解为若干个小点数 DFT 的组合, 从而减少运算量。

W N 因子具有以下两个特性,可使 DFT 运算量尽量分解为小点数的 DFT运算:(1) 周期性:( k + N ) nN= W kn= W ( n + N ) k(2) 对称性:W( k + N / 2 )= −W kNN利用这两个性质,可以使 DFT 运算中有些项合并,以减少乘法次数。

例子:求当N=4 时,X(2)的值4 NNN3∑44444X (2) = n =0x (n )W 2 n = x (0)W 0 + x (1)W 2 + x (2)W 4 + x (3)W 6= [ x (0) + x (2)]W 0 + [ x (1) + x (3)]W 2(周期性)4=[ x (0) + x (2)]-[ x (1) + x (3)]W 04(对称性)通过合并,使乘法次数由 4 次减少到 1 次,运算量减少。

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

N=8 当k=0、1、2、3时: 、 、 、 时 X1(k)、 X2(k)→X(k) 、 → →X(k+N/2)
0 X (0) = X 1 (0) + WN X 2 (0) k =0 0 X (4) = X 1 (0) − WN X 2 (0) 1 X (1) = X 1 (1) + WN X 2 (1) k =1 1 X (5) = X 1 (1) − WN X 2 (1) X (2) = X 1 (2) + WN2 X 2 (2) k =2 2 X (6) = X 1 (2) − WN X 2 (2) 3 X (3) = X 1 (3) + WN X 2 (3) k =3 3 X (7) = X 1 (3) − WN X 2 (3)
式中
X 3 (k ) = X 4 (k ) =
N / 4 −1
k N /2
2. FFT算法的设计思想 减少运算量的基本途径 算法的设计思想算法的设计思想 1)利用 W 的特点 WN = e
nk N
−j 2π N
−j 2π ( m + lN ) N −j 2π m N
(1)周期性 W = W )
nk N
(n+N )k N
=W
n(k +N ) W N
m + lN N
=e
=e
X1(k)
k WN
X (k)
1 −1
化简
X2 (k)
N X (k + ) 2
k = X1(k) +WN X2 (k) X (k)
X1(k)
k WN
X2 (k)
蝶形运算流图
N k X (k + ) = X1(k) −WN X2 (k) 2
X1(k)
k WN
k = X1(k) +WN X2 (k) X (k)
N点X(k)与N/2点X1(k)、X2(k)之间的关系式: k X (k) = X1(k) +WN X2 (k)
N (k + ) N N N 2 X (k + ) = X1(k + ) +WN X2 (k + ) 2 2 2
k = 0,1,L, N / 2 −1
W
N (k + ) 2 N k = −WN
复乘次数: 复乘次数:
N项
共需N 次复乘。以做一次复乘1µs计 计算一个 N点DFT ,共需 2次复乘。以做一次复乘 计,若N 点 =4096,所需时间为 ,
(4096)2 =16777216µs ≈17s
复加次数: 复加次数:
N(N-1) 当N>>1 → N2 复乘次数与复加次数均与N 复乘次数与复加次数均与 2成正比
4.2 基2FFT算法
满足 N=2M ——基2FFT 基 分为两大类: 分为两大类: 时域抽取法FFT(Decimation In Time FFT, 时域抽取法 简称DIT-FFT) 简称 频域抽取法FFT(Decimation In Frequency 频域抽取法 FFT,简称 简称DIF―FFT) 简称
复数加法次数为
显然, 显然,这样的分解是有效的 由于
N =2
M
可继续照此办法分解,即将 x1 (r) x2 (r) 按 r 的奇、偶各分为两组
按奇偶分解成两个N/4长的子序列 3(l)和x4(l), 长的子序列x 和 将x1(r)按奇偶分解成两个 按奇偶分解成两个 长的子序列 , 即
x3 (l ) = x1 (2l )
n=0
k =1
01 11 ( ⋅ X (1) = x(0)WN⋅ + x(1)WN⋅ +L+ x(N −1)WNN−1)1
k =2
X (2) = x(0)W + x(1)W +L+ x(N −1)W
0⋅2 N
12 ⋅ N
( N −1)⋅2 N
N个
M
0 1 ( k = N −1 X (N −1) = x(0)WN⋅N−1 + x(1)WN⋅N−1 +L+ x(N −1)WNN−1)⋅N−1
X2 (k)
蝶形运算流图
N k X (k + ) = X1(k) −WN X2 (k) 2
在蝶形运算符号中,左边两点为输入,右上支路为相加输出, 在蝶形运算符号中,左边两点为输入,右上支路为相加输出,右下 支路为相减输出,支路上的数为加权值. 支路为相减输出,支路上的数为加权值 完成一个蝶形运算需要一次复数相乘,两次复数相加。 完成一个蝶形运算需要一次复数相乘,两次复数相加。
DFT提供了计算机处理的可能性 提供了计算机处理的可能性 模拟信号的频谱分析
xa (t)
T
ˆ xa (t)
A/ D
x(n)
数字计算机
DFT[x(n)]
X (k) ≅ Xa ( f )
N足够大 DFT是信号分析与处理中的一种重要变换。因直接计算 是信号分析与处理中的一种重要变换。 是信号分析与处理中的一种重要变换 DFT的计算量与变换区间长度 的平方成正比,当N较大时, 的计算量与变换区间长度N的平方成正比 较大时, 的计算量与变换区间长度 的平方成正比, 较大时 计算量太大,所以在快速傅里叶变换(简称 简称FFT)出现以前,直 出现以前, 计算量太大,所以在快速傅里叶变换 简称 出现以前 接用DFT算法进行谱分析和信号的实时处理是不切实际的。 算法进行谱分析和信号的实时处理是不切实际的。 接用 算法进行谱分析和信号的实时处理是不切实际的
由于计算量大,且要求相当大的内存,难以实现实时处理, 由于计算量大,且要求相当大的内存,难以实现实时处理,限 制了DFT的应用。 的应用。 制了 的应用
长期以来,人们一直在寻求一种能提高DFT运算 速度的方法。 FFT便是Cooley&Tukey(库利 图基 库利-图基 库利 图基)在1965 年提出 的的快速算法,它可以使运算速度提高几百倍,从 而使数字信号处理学科成为一个新兴的应用学科。
N −1
2 ( = ∑x(2r)WN rk + ∑x(2r +1)WN2r+1)k r =0 r =0
N −1 2
N −1 2
rk k rk = ∑x1 (r)WN +WN ∑x2 (r)WN r =0 2 r=0 2
N −1 2
N −1 2
2 WN kr = e
−j
2π 2 kr N
−j
=e
2π kr N 2
算法) (Cooley-Tukey算法) 算法
库利-图基算法 库利-图基算法
FFT(Decimation In Time FFT,简称 ,简称DIT-FFT ) -
DIT-FFT推导: - 推导: 推导
设序列x(n)的长度为 ,且满足 的长度为N, 设序列 的长度为
N =2
M
将x(n)按 n 的奇偶分为两组:两个 点的子序列 按 的奇偶分为两组:两个N/2点的子序列
kr = WN 2
k = X1(k) +WN X2 (k) k = 0,1,L, N / 2 −1
N k≥ 2
X (k) = ?
X(k)为N点DFT运算,而X1(k)与X2(k)为N/2点DFT 为 点 运算, 运算 与 为 点 当
N k≥ 2
2
时,可利用X1(k)与X2(k)的周期性:
N r (k + ) 2 N 2
4.2.1 直接计算 直接计算DFT的特点及减少运算量的基本途径 的特点及减少运算量的基本途径 1.直接计算 直接计算DFT的特点 的特点-DFT的运算量 大 的运算量--直接计算 的特点1 的运算量 N− nk X (k) = DFT[x(n)] = ∑x(n)WN k=0,1,2,…,N–1
计算机运算时: 计算机运算时: 0 1 ( X (0) = x(0)WN⋅0 + x(1)WN⋅0 +L+ x(N −1)WNN−1)⋅0 k =0
0 WN
X (0) X (1) X (2) X (3)
X (4)
X (5)
X2 (1) N 1 点 WN 2 X2 (2) 2 DFT WN X2 (3)
X (6)
X (7)
2 N
0 X (0) = X 1 (0) + WN X 2 (0) k =0 0 X (4) = X 1 (0) − WN X 2 (0) 1 X (1) = X 1 (1) + WN X 2 (1) k =1 1 X (5) = X 1 (1) − WN X 2 (1)
N , l = 0,1, ⋅⋅⋅, − 1 x4 (l ) = x1 (2l + 1) 4
那么, 那么,X1(k)=DFT[x1(r)]N/2 又可表示为
X 1 (k ) =
N / 4 −1
ห้องสมุดไป่ตู้

l =0
x1 (2l )WN2 /kl2 + x3 (l )W
kl N /4
N / 4 −1

l =0
N 经以上分解,X1 (k) 、X2(k) 各为 点DFT,即分 2 2
别进行了
N 时,需进行 次复乘: 2
N 次复乘,而将 X1 (k) 与 X2 (k) 合成为 2
X(k)

N2 N N 2 N = (N +1) ≈ 复乘次数= 2 ×( ) + 2 2 2 2
2 N 2N N N − 1 + = 2 2 2
rk Q WN =W
N X 1 + k = ∑ x1 (r )W 2 r =0
N −1 2
相关文档
最新文档