第四章快速傅里叶变换
第四章 快速傅里叶变换
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
《快速傅里叶变换》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算法进行谱分 析和信号的实时处理是不切实际的。
信号与系统(第四章)-离散傅里叶变换与快速傅里叶变换
反转,并取主值区间序列
周期延拓
反转后
向右平移1位 向右平移3位
向右平移2位
于是,由
y
(n)
3
x(k
)h((n
k
))
4
G4
(n)
,得
k 0
y(0) 1114 13 02 8
y(1) 1 2 1114 03 7
y(2) 1312 11 04 6
y(3) 14 1312 01 9
➢ 线卷积与圆周卷积
• 线卷积的移位是平移,圆周卷积的移位是周期位 移。
• 线卷积不要求两序列长度一致。若 x(n)与h(n)的长度分别为M和N,则 y(n)=x(n)*h(n)的长度为M+N-1。 圆周卷积要求两序列长度一致,否则短序列须补 零,使两序列等长后,才可进行圆周卷积。
DFT ax1(n) bx2(n) aDFT x1(n) bDFT x2(n)
(4.9)
当序列x1(n)和x2(n)长度不一致时,则可通过将较 短序列补零,使两序列长度一致,此时,式(4.9)成立。
2、圆周位移特性 圆周时移:圆周时移指长度为N的序列x(n),以N 为周期做周期延拓生成xp(n),位移m位后,得序 列xp(n-m),在此基础上取其主值区间上序列。
于是
x(n)
x(t)
t nTs
k
X e jk1nTs k
X e X e
j
2 T1
knTs
k
j 2 nk N
k
(4.3)
k
k
式(4.3)两边同乘
e
j 2 N
nm
,再取合式
N 1
,得
n0
第四章 快速傅里叶变换
运 算
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
4 快速傅里叶变换
4.2 直接计算 DFT 的问题及改进的途径
设 x(n) 为 N 点有限长序列 , 其 DFT 为
X (k ) x(n)W , k 0,1,…,N-1
n 0 nk N
N 1
(4-1)
反变换( IDFT) 为
1 N 1 nk x(n) X (k )WN , n 0,1,…,N-1 N k 0
表示。流图的表示法 将在第五章中讨论 , 当支路上没有标出系数
时 , 则该支路的传输系数为 1 。
采用这种表示法 , 可将上面讨论的分解过程表示于图 4-2 中。 此图表示 N= =8 的情况 , 其中输出值 X(0) 到 X(3 )是由(4-11) 式给出的 , 而输出值 X(4 )到 X(7 )是由 (4-12) 式给出的。
前半部分X(k)(k=0,1……,N/2-1)
后半部分X(k)(k= N/2 ……,N-1)
这样 , 只要求出 0 到 (N/2-1 )区间的所有
值 , 即可
求出 0 到 (N-1) 区间 内的所有 X(k)值 , 这就大大节省了运算。
(4-11)式和 (4-12)式的运算可以用图 4-1 的蝶形信号流图符号
nk (1) WN 的对称性
(W ) W
nk * N
nk N
nk (2 ) 的周期性 WN
W
(3)W
nk N 的可约性
nk N
W
W
( n N ) k N
W
n( k N ) N
W
nk N
nmk mN
,W
nk N
W
nk / m N /m
由此可得出
n ( N k ) ( N n ) k nk WN WN WN ,
数字信号处理_程佩青_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 抽样函数右边的第一个过零点在
快速傅里叶变换的原理及公式
快速傅里叶变换的原理及公式快速傅里叶变换(Fast Fourier Transform,FFT)是一种快速计算离散傅里叶变换(Discrete Fourier Transform,DFT)的算法。
DFT是将时域的离散信号转换为频域的频谱表示的技术,它在信号处理、图像处理、语音识别等领域有着广泛的应用。
FFT算法通过利用信号的特殊性质,提高了计算效率,使得在计算复杂度为O(NlogN)的时间内,完成了DFT的计算。
FFT的原理基于傅里叶级数展开的思想。
任何周期为T的信号,都可以用一组正弦信号和余弦信号的和来表示。
傅里叶级数展开公式如下所示:f(t) = A0 + Σ[Ak*cos(kω*t) + Bk*sin(kω*t)]其中,f(t)表示信号的时域表示,A0表示直流分量,Ak和Bk表示信号的谐波分量,ω=2π/T表示信号的角频率。
FFT算法的主要思想是将DFT的计算分解为多个较小规模的DFT计算。
假设原始信号的长度为N,当N为2的幂时,可以将信号分为两个长度为N/2的子序列。
通过对这两个子序列分别进行FFT计算,然后合并计算结果,就得到了原始信号的DFT。
FFT算法可以描述为分治法的一个典型应用。
通过将信号分为两个子序列,FFT的计算可以分为两个阶段:变址和蝶形算法。
变址阶段的目标是将原始信号重新排列成迭代结构的形式,这样方便后续的计算。
变址操作通过位逆序运算实现,即将信号的各个元素按照二进制位翻转顺序重新排列。
蝶形算法是FFT计算的核心部分。
蝶形算法通过将信号的DFT计算分解为一系列蝶形运算,每个蝶形运算只涉及到两个元素的计算。
一个蝶形运算可以表示为如下公式:Xk=Xk_0+W_N^k*Xk_1Xk+N/2=Xk_0-W_N^k*Xk_1其中,Xk和Xk+N/2表示将原始信号分为两部分计算得到的结果,Xk_0和Xk_1分别是这两部分的数据,W_N^k表示旋转因子,计算公式为W_N^k = exp(-2πi*k/N)。
快速傅里叶变换
r 0,1,
, N 2 1
N / 2 1
r 0
x(2r )WN
2 rk
N / 2 1
r 0
x(2r 1)WN
(2 r 1) k
N / 2 1
r 0
rk k x(2r )WN W /2 N
N / 2 1
r 0
rk x(2r 1)WN /2
N 2 N N ( N 1) N 2 所以8点FFT求X (k )共需 36次复数乘法, 2 2 2 2 N N2 N ( 1) N 32次复数加法, 共计为68次。看出仅做一次 2 2 分解就可以节省约一半计算量。
(2)N/2(4点)-->N/4(2点)FFT
N/2点 DFT
X1(1)
X1(2)
X1(3) X2(0)
WN
0
X(0) X(1) X(2) X(3)
1 2
x2(r) x2(0)=x(1)
奇 数 序 列
x2(1)=x(3) x2(2)=x(5) x2(3)=x(7)
N/2点 DFT
X2(1)
X2(2)
WN
WN
X2(3)
3 WN
X(4) -1 X(5) -1 X(6) -1 X(7)
-1 X(4)~X(7)
如:X(0) X 1 (0) X 2 (0)W80 X(2) X 1 (2) X 2 (2)W82
X( 1) X 1 (1) X 2 (1)W81
X(3) X 1 (3) X 2 (3)W83
同学们自已写
比较直接计算N=8点DFT 与分解2个4点DFT的
数字信号处理 第四章03 DIF
kn X 2 (k ) X (2k 1) DFT [ x2 (n)] x n W k 0,1,..., ( ) 2 N , 6 / 30 n 0 2
N 1 2
-周
治
kn N 2
国
N 1 2
可见,
N DFT
-周
按频率抽取
治
N DFT 2
按k为奇偶分解
号
x ( n)
N n rn n)]WN WN 2 2
5 / 30
处 理 课
X (2r 1) [ x(n) x(
N 1 2
N ( 2 r 1) n n)]WN 2
件
-周
[ x ( n) x (
r 0,1,...,
治
N 1 2
N rn n)]WN 2 2
国
N 1 2
N N 2 , 2 1 仍为偶数( 3) 2
∴上述分解过程可继续下去, 直至分解ν次/步后变成求 N/2 个 2 2-DFT DFT 为止。 DIF-FFT算法
-周
治
国
N/2点 DFT N/2点 DFT
数
(显然与DIT-FFT算法的分解类似)
字 信
号
8 / 30
处 理 课
件
例:N=8,DIF-FFT算法流图
N 1 k 0
n 0,1,..., N 1
比较IDFT与DFT,可见 可见 FFT
处 理 课
件
FFT
1 1 WN WN 2 x ( n) X ( k )
-周
kn DFT:X (k ) x(n)WN ,
治
国
k 0,1,..., N 1
DSP--FFT-深入浅出-详细讲解快速傅里叶变换
第一节 引言
一、迅速付里叶变换FFT
• 有限长序列经过离散傅里叶变换 (DFT)将其频 域离散化成有限长序列.但其计算量太大(与N 旳平方成正比), 极难 实时地处理问题 , 因 此 引 出 了 快 速 傅 里 叶 变 换(FFT) .
• 一种复数乘法涉及4个实数乘法和2个实数相 法。
(a+jb)(c+jd)=(ac-bd)+j(bc+ad)
2次实数加法
4次实数乘法
4.计算DFT需要旳实数运算量
N 1
X (k) {(Re[x(n)]Re[WNkn ] Im[x(n)]Im[WNkn ]) n0
j(Re[x(n) Im[WNkn ] Im[x(n)]Re[WNkn ])}
4
4
X (k) N X (k) N
(
N
)
4 2
4
+
(
N 4
4
)2
=
N 4
2
这么一直分下去,剩余两点旳变换。
2、将长序列DFT利用对称性和 周期性分解为短序列DFT--结论
• 迅速付里时变换(FFT)就是在此特征基础上 发展起来旳,并产生了多种FFT算法,其基 本上可提成两大类:
• 按抽取措施分: 时间抽取法(DIT);频率抽取法(DIF)
r 0
r 0
W 2
j 2 2
e N
j 2
e N/2
W
3.求出子序列旳DFT
上式得:
N / 21
N / 21
X(k)
x1(r)WNrk/ 2
x2 (r)WNrk/ 2WNk
第四章 离散傅里叶变换及其快速算法
离散 连续
周期延拓 非周期
4.1 离散傅里叶变换的定义
kn X (k ) DFT [ x(n)] x(n)WN , n 0 N 1 N 1 n 0 2 kn N
= x ( n )e
j
k=0, 1, , N-1
X ( k )WN kn k 0 N 1
1 x(n) IDFT [ X (k )] N 1 N
4 N
x D1X N
W N ( N 1 ) 2 ( N 1 ) WN W N ( N 1 )( N 1 ) 1
1
D
1 N
W N 2 ( N 1 )
1 DN N
dftmtx(N) 函数产生N×N的DFT矩阵DN conj(dftmtx(N))/N 函数产生N×N的IDFT矩阵DN-1
二、 圆周移位性质
1. 序列的圆周移位 x(n)的圆周移位定义为
y(n)=x((n+m))N RN(n) 其过程为: 1)、将x(n)以N为周期进行周期延拓得x((n))N 2)、将x((n))N左移m位,得x((n+m))N 3)、取其主值序列x((n+m))N RN(n) 循环移位过程如图所示
WNN 1
2 WN ( N 1)
WNN 1 2 WN ( N 1) ( WN N 1) ( N 1)
DFT
IDFT矩阵形式为
1 1 1 W 1 N 1 D 1 1 W N 2 N N 1 W N ( N 1 ) 1 W N 2 W
0 n N `1 0 k N `1
DFT 则: x1 (n) x2 (n) X1 ( K ) X 2 ( K )
第四章-傅里叶变换
离散傅里叶级数涉及到的都是有限项求和,因此只要 ~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
fx第4章 FFT
2.蝶形运算
N x(n)和x(n + )进行如下碟形运算: 2 N x(n)
x(n) + x(n + 2
)
N x(n + ) 2
n = 0,1 L, N −1 , 2
-1
W
n N
N n x(n) − x(n + 2 )WN
四、DIF法与DIT法的异同 DIF法与DIT法的异同 法与DIT
(k = 0,1,L, N − 1) 2 (k = N ,L, N − 1) 2
return
FFT的运算量为 3. N点的FFT FFT 复乘:
(N/2) log2 N N/ )
复加:
L=N log2 N
三、DIF的FFT算法 DIF的FFT算法 1.算法原理(基2FFT) 1.算法原理( 算法原理
1.相同点 1. (1)进行原位运算; (1) (2)运算量相同,均为(N/2) Log2N次 (2) , 复乘,N Log2N次复加。 , 2.不同点 2. (1)DIT输入为倒位序,输出为自然顺 (1)DIT 序; DIF正好与此相反。但DIT DIT也有输入 DIF DIT 为自然顺序,输出为倒位序的情况。 (2)蝶形运算不同
按时间抽取(DIT) FFT算法 (DIT)的 二、按时间抽取(DIT)的FFT算法 1.算法原理( 1.算法原理(基2FFT) 算法原理
将
x(n)
按n的奇偶分为两组作DFT, N=2L ,不足时,可补些零。 DFT,设N=2 DFT,
2.蝶形运算 2.蝶形运算
k X (k) = X1(k) +WN X2 (k) 前一半 k X (k) = X1(k) −WN X2 (k) 后一半
快速傅里叶变换原理介绍
快速傅里叶变换原理介绍快速傅里叶变换(Fast Fourier Transform,FFT)是一种用于对信号进行频谱分析的算法,它可以将一个信号分解为一系列不同频率的正弦和余弦函数的和。
FFT算法的核心思想是将一个复杂度为O(N^2)的傅里叶变换问题转化为一个复杂度为O(NlogN)的问题,从而大大提高了计算效率。
本文将详细介绍快速傅里叶变换的原理。
傅里叶变换可以将一个信号在时域中表示的波形转换为在频域中表示的频谱信息。
傅里叶变换公式如下:F(k) = ∑[0, N-1] f(n) * e^(-1j2πkn/N)其中,F(k)表示频域中的频率分量,f(n)表示时域中的波形样本点,N表示样本点数,e^(-1j2πkn/N)为旋转因子。
传统的傅里叶变换算法需要进行N次复杂度为O(N)的运算,即总的时间复杂度为O(N^2)。
而快速傅里叶变换算法通过巧妙地进行分治和递归,将计算复杂度降低到O(NlogN)。
FFT算法的基本思想是将傅里叶变换问题分解为两个规模更小的子问题,并将这些子问题相互继承计算结果。
具体步骤如下:1.将N个样本点分成偶数和奇数两组。
2.对于奇数组的N/2个样本点,进行递归地进行FFT计算,得到N/2个频域分量。
3.将偶数组的N/2个样本点也进行递归地进行FFT计算,得到N/2个频域分量。
4.将得到的奇数组的频域分量和偶数组的频域分量两两相加,得到N个频域分量。
5.根据旋转因子的周期性和对称性,将N个频域分量通过一次合并操作得到最终的FFT结果。
通过以上步骤,FFT算法将一个规模为N的傅里叶变换问题拆分成两个规模为N/2的子问题,并通过合并操作将子问题的计算结果综合为整体的计算结果。
这种分治和递归的思想大大简化了傅里叶变换的计算过程,提高了计算效率。
快速傅里叶变换算法还有一些优化技巧,例如位逆序重排、蝶形运算等,用于进一步提高计算速度和减少计算量。
位逆序重排可以有效减少频域分量的重复计算和数据访问次数,蝶形运算可以并行计算频域分量,减少运算次数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1. 引言 2. 直接计算DFT的问题及改进的途径 3. 按时间抽选(DIT)的基-2FFT算法 4. 离散傅里叶反变换(IDFT)的快速计算方
法 5. N为复合数的FFT算法-混合基算法 6. 线性调频Z变换(Chirp-z变换)算法 7. 线性卷积与线性相关的FFT算法
1. 引言
先将x(n)分段,每段补上L=N-M+1个点;序列
中补零处不补零,而每一段的前边补上前一段保
留下来的(M-1)个输入序列值,组成L+M-1
点序列
,如图4.30a所示。
如果
,则可在每段序列未端补
零值点,补到长度为2m。
二、线性相关的FFT算法:常称之为快速相关,要 利用补零值点的办法避免混叠失真。
的确定
第m级运算由4-21式写成
其中r的求解方法为
6. 存储单元 输入序列 系数
N个单元 N/2个单元
四. 按时间抽选的FFT算法的其它形 式流程图
4.5 离散傅里叶反变换的快速计算方 法
从IDFT公式
与DFT公式
比较可知,只要把DFT运算中的每一个系数
变成
,最后再乘常数1/N,则以上所有
(3)N是复合数,即它可以分解成一些成一些因子 的乘积,用混合基算法。
一. 整数的多基多进制表示形式
(1)对于二进制,
表示为
二进制倒序为
(2)对于r进制,正序
倒序
(3)对于多进制或称混合基 N可以表示成复合数,
的任一个正整数n,可以按L个基 表示。正序
倒序
,则对于
在这一多进制的表示中 可记为
, N1 2
(4.12)
这样,4.11、12式只要0-(N/2-1)区间的所有
X(k)值。
的值,即可求0到(N-1)区间所有
4.11和4.12式用图4-1的蝶形符号表示。
N=8的情况如图4-2
分析:每个蝶形运算需要一次复数乘法
及
两次复数加(减)法。通过分解后运算工作量差不
多减少到一半。
4.42式可进一步表示为
式中
N为复合数
的DFT算法的步骤归纳如下:
(1)将x(n)改写成
利用
利用4.44式做 个 点DFT,得
利用4.45式,把N个
子
,组成
乘以相应的旋转因 。
利用4.46式,做 个 点DFT,得
利用4.47式,进行整序,得到
其中
对于
重写n和k的表达式
则4.44式变成
X再2考N2虑k性质XW 2N kN 2k
WNN2WN k WN k
(4.9) (4.10)
把4.8,4.9,4.10代入4.5式,将X(k)表达成前后两部
分,前部分为
X kX 1k W N kX 2k, k 0,1,
,
N 2
1
(4.11)
后部分为
XkN2X1kN2WNrkN2X2kN2
X1kWNkX2k,k0,1,
这时
当L太大时,体现不出圆周积分的优点。 解决办法:分段卷积或称分段过滤
1. 重叠相加法
设h(n)的点数为M,信号x(n)为很长的序列。将x(n)
分解为很多段,每段为L点,L选择成和M的数量级
相同,用
表示x(n)的第i段
则输入序列可表示成
(4.108) (4.109)
线性卷积为
(4.110)
进一步把N/2点子序列再按奇偶部分分解为两个N/4 点的子序列
且 其中
图4-3,给出N=8时,在分解为两个N/4点DFT, 由两个N/4点DFT组合成N/2点DFT的流图。
也可进行同样分解:
其中
一个N=8点DFT就可分解为四个N/4=2点DFT如图
序列按奇偶分解标号变化讨论(N=8) 第一次分解:两个N/2点序列:
每一个
对
和
用基2算法,取
作N点的圆周卷积
才可用快速卷积办法来运算, 补零值点,补到N点。为利
,然后
其方法如图4-29所示。
重叠相加法的步骤总结 (1)计算N点FFT, (2)计算N点FFT, (3)相乘,
(4)计算N点IFFT,
(5)将各段
(包括重叠部分相加),
2. 重叠保留法
线性相位滤波器满足条件
运算结构如图5.26,5.27所示 线性相位பைடு நூலகம்IR滤波器的乘法运算量
用FFT法(圆周卷积)来代替这线性卷积时,不产 生混叠条件是使x(n),h(n)都补零值点,补到至少 N=M+L-1,即
然后计算圆周卷积
此时y(n)能代表线性卷积结果。
用FFT计算y(n)步骤如下: (1)求
此时有两组4点DFT。4.45,46式分别变成 后一式子共有4组2点DFT,4.47式变成
算法可以采用先乘旋转因子再算DFT的算法 当N为一个复合数时,可以分解为一些因子的乘积
2. N为复合数时FFT运算量的估计
当
时,运算量为
复数乘法
复数加法
直接计算N个点DFT工作量 加法
设x(n)为L点,y(n)为M点,需求线性相关
(4.115)
利用FFT法求线性相关是用圆周相关代替线性相关,
选择
令
其计算步骤如下: (1)求N点FFT,
(2)求N点FFT,
(3)求乘积,
(4)求N点IFFT, 同样,可以只利用已有的FFT程序计算IFFT,求
再见!
谢谢观赏
共同学习交流提高
第二次分解,每个N/2点子序列按其奇偶分解为两个 N/4点子序列
最后2点DFT按4-14~17进行计算。
这种方法的每一步分解都是按输入序列在时 间上的次序是属于偶数不是属于奇数来分解 为两个更短的子序列,所以称为“按时间抽 选法”。
运算量分析
直接DFT复数算法次数是 FFT复数乘法次数是 DFT和FFT算法的计算量之比为
存在问题:
整个DFT运算总共需要4 N 2 次行乘法运算和
N 2 (2 N 1 ) 2 N (2 N 1 )次加法运算。
直接计算DFT,乘法次数和加法次数都是和 N 2 成
正比。
减少DFT运算工作量的途径:利用 (1) 的对称性:
对称性:
(2) 的周期性:
(3) 的可约性: 可以得出
,N点
(2)求
,N点
(3)计算
;
(4)求
,N点
工作量分析 FFT计算工作量
(4.105)
用线性相位滤波器来比较直接计算线性卷积和FFT 法计算线性卷积时比值
(4.106)
运算量分析:
(1)x(n)与h(n)点数差不多,设M=L,
则
,则
计算得下表
(2)当x(n)点数很多时,即当 则
按时间抽选或按频率抽选的FFT都可以拿来运算
IDFT。
不改FFT的程序计算IFFT方法: 对4.29式取共轭
因而
4.6 N为复合数的FFT算法 --混合基算法
当N不满足
时,可有以下几种办法
(1)将x(n)补一些零值点的办法
(2)如要求准确的N点DFT,而N又是素数,则只 能采用直接DFT方法,或者用CZT方法。
例4-1
二、
的快速算法
要计算N点DFT为
设n是一个复合数 公式表达:
(4.39) ,可将n的数用下面的
同样,倒序表达为
(4.40)
(4.41)
例:设r1 4,r2 2 ,则
那么 所以
则排列为
同样,若 则
所以
将4.40式与4.41式代入4.39式,可得
上式运用了
结果
(4-2)
X k N 1xnW N nk N 1R e xn jIm xn R e W N nk jIm W N nk (4.3)
n 0
n 0
N 1
R e xn R e W N nk Im xn Im W N nk jR e xn Im W N nk Im xn R e W N nk n 0
r 0
r 0
(4.5)
式中
N1
N1
2
2
X1k x1 rW N rk2 x2rW N rk2
r0
r0
(4.6)
N1
N1
2
2
X2k x2 rW N rk2 x2r1W N rk2 (4.7)
r0
r0
应用系数的周期性
可得
(4.8) X 1 N 2 k N r 2 0 1x 1rW N r 2 N 2 k N r 2 0 1x 1rW N rk2X 1k
实际办法: (1)用上述特性对项合并 (2)将长序列的DFT分解为短序列的DFT。
3. 按时间抽选的基-2FFT算法 --3.1 算法原理
先设序列点数为 N 2L ,按n的奇偶进行分解
将DFT化为
利用系数 W
n N
k
的可约性,即
得
N 1
N 1
2
2
X k x 1rW N rk 2 W N k x 2rW N rk 2 X 1k W N kX 2k
结论:FFT比DFT更优越,当N越大时,优点更明 显。
三、按时间抽选的FFT算法特点
1. 原位运算 每个蝶形结构完成下述基本迭代运算:
4.21的蝶形运算如图4-7所示。
2. 倒位序规律
3. 倒位序的实现:通过变址运算完成
4. 蝶形运算两结点的距离:
第m级运算,每个蝶形的两节点距离为
乘法:N(N+1)
混合基算法可节省的运算量倍数为 乘法
加法
当 数
时,混合基算法总乘法次
与直接计算DFT相比,运算量之比
4.10 线性卷积与线性相关的FFT算法
一、线性卷积的FFT算法 1. 概念 设x(n)为L点,h(n)为M点,输出y(n)为