第二章离散傅里叶变换及其快速算法(下)

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

(1)k
1, k为偶数 1奇数
把X(k)进一步分解为偶数组和奇数组:
N / 21
X (k) [x(n) (1)k x(n N / 2)]WNnk n0
N / 21
X (2r) [x(n) x(n N / 2)]WN2nr n0
N / 21
[
x(n)
x(n
N
/
2)]WN2
nr /2
种表示法,就可以将以上所讨论的分解 过程用流图表示。
N=23=8 的例子。
x(0)
G(0)
X(0)
x(2)
N/2点 G(1)
X(1)
x(4)
DFT G(2)
X(2)
x(6)
G(3)
X(3)
x(1)
H(0)
x(3)
N/2点 H(1) WN1
x(5)
DFT H(2) WN2
x(7)
H(3) WN3
X(4)
的运用,而频谱分析仍大多采用模拟信号滤波 的方法解决,直到1965年首次提出DFT运算的一
种快速算法以后,情况才发生了根本变化,人 们开始认识到DFT运算的一些内在规律,从而很 快地发展和完善了一套高速有效的运算方法— —快速付里变换(FFT)算法。FFT的出现,使 DFT的运算大大简化,运算时间缩短一~二个数 量级,使DFT的运算在实际中得到广泛应用。
x(r
)W
rk N
WNk
x(r
)W
rk N
r
r
Gk WNk H k
其中
N /
Gk x(r)WNrk
r
N /
Hk
x(r
)W
rk N
r
注意到,H(k),G(k)有N/2个点,即k=0,1,…, N/2-1,还必须应用系数 wkN 的周期性和对称性
表示 X(k)的 N/2 ~N-1点:
N=2M,M:正整数
首先将序列x(n)分解为两组,一组为偶数项,一组为奇 数项,
x(2r) x1(r) x(2r 1) x2 (r
)
r 0,1,, N/2-1
将DFT运算也相应分为两组:
N 1
x(k ) DFT x(n) x(n)wNnk
n0
N 2
N 1
x(n)wNnk
x ( n) wNnk
的结果仍然储存在同一组存储器中,直到最 后输出,中间无需其它存储器,这叫原位计 算。
每一级运算均可在原位进行,这种原位运算 结构可节省存储单元,降低设备成本,还可 节省寻址的时间。
(3)序数重排 对按时间抽取FFT的原位运算结构,当运算完
毕时,正好顺序存放着 X(0),X(1),X(2 ),…,X(7),因此可直接按顺序输出,但这 种原位运算的输入 x(n)却不能按这种自然顺序 存入存储单元中,而是按x(0),x(4),x(2),x(6) ,…,x(7)的顺序存入存储单元,这种顺序看起
N / 21
N 1
X (k)
x(n)WNnk x(n)WNnk
n0
nN / 2
N / 21
x(n)WNnk
n0
N / 21
x(n
n0
N 2
(n
)WN
N 2
)k
N / 21
[x(n) WN(N / 2)k x(n N / 2)]WNnk n0
WNN / 2
1,WN(N / 2)k
从上面的分析看到,在DFT计算中,不论是乘法和 加法,运算量均与N2成正比。因此,N较大时,运 算量十分可观。例,计算N=10点的DFT,需要100 次复数相乘,而N=1024点时,需要1048576(一百 多万)次复数乘法,如果要求实时处理,则要求 有很高的计算速度才能完成上述计算量。
反变换IDFT与DFT的运算结构相同,只是多乘 一个常数1/N,所以二者的计算量相同。
(a)
a-bW
来自百度文库
W
b
-1
(b)
a-bW
蝶形运算 的简化
图 (a)为实现这一运算的一般方法,它需 要两次乘法、两次加减法。考虑到-bW和 bW两个乘法仅相差一负号,可将图 (a)简 化成图2.7(b),此时仅需一次乘法、两次 加减法。图 (b)的运算结构像一蝴蝶通常 称作蝶形运算结构简称蝶形结,采用这
• 第若组n一 序0=次 列0,分 :则偶为、偶奇序,列根;据n最0=低1则位为n0奇的序0、列1,状得态到来两分,
• 000 010 100 110 001 011 101 111 • 第二次对这两个偶、奇序列再分一次偶、奇序列,
这列就 ;n要1=根1则据为n1的奇0序、列1,状得态到。四若组n序1=列0,:则为偶序 • 000 100 010 110 001 101 011 111 • 同直高理 到 位, 不 ,再 能 最根 再 后据 分 一偶次n2的、分0奇得、时结1为果状止为态。来对分于偶N=、8,奇n2序已列是,最
来相当杂乱,然而它也是有规律的。当用二进制
表示这个顺序时,它正好是“码位倒置”的顺序 。例如,原来的自然顺序应是 x(1)的地方,现在 放着 x(4),用二进制码表示这一规律时, 则是在
x(0 0 1)处放着 x(1 0 0), x(0 1 1)处放着 x(1 1 0)。
表 码位倒置顺序
自然顺序
二进码表示
-1
X(5)
-1
X(6)
-1
X(7)
-1
两个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。
0
000
1
001
2
010
3
011
4
100
5
101
6
110
7
111
码位倒置 000 100 010 110 001 101 010 111
码位倒置顺序 0 4 2 6 1 5 3 7
在实际运算中,一般直接将输入数据 x(n)按码位倒置的顺序 排好输入很不方便,总是先按自然顺序输入存储单元,然后再通 过变址运算将自然顺序的存储转换成码位倒置顺序的存储,然后 进行FFT的原位计算。目前有许多通用DSP芯片支持这种码位倒置 的寻址功能。
N/4点 N/4点
N/4点 N/4点
由 四 个 2 点 DFT 组 成 8 点 DFT
最后剩下的是2点DFT,它可以用一个蝶形结表示:
X (0) x(0) W20x(1) x(0) WNo x(1) X (1) x(0) W21x(1) x(0) WNo x(1)
这样,一个8点的完整的按时间抽取运算的流图
N / 21
X (2r) a(n)WNnr/2 n0 N / 21
X (2r 1) b2 (n)WNnr/2 n0
这正是两个N/2点的DFT运算,即将一个N点的DFT分解为两 个N/2点的DFT,上式的运算关系可用下图表示.

wrN / 2k N
wNrk
2
2
(k N )
WN 2
WNk
得:
X
(k
N 2
)
Gk WNk
H k,
k 0,1, N 1 2
可见,一个N点的DFT被分解为两个N/2点的DFT,这 两个N/2点的DFT再合成为一个N点DFT.
X k Gk WNk H k ,
k ,, , N
X
(k
N 2
第二章 离散傅里叶变换 及其快速算法
§2.3 快速傅里叶变换 (FFT)
快速傅里叶变换(FFT)是计算DFT的一种 快速有效方法。 从前面的讨论中看到,有 限长序列在数字技术中占有很重要的地位。有 限长序列的一个重要特点是其频域也可以离散 化,即离散傅里叶变换(DFT)。
虽然频谱分析和DFT运算很重要,但在很长一 段时间里,由于DFT运算复杂,并没有得到真正
• 000 100 010 110 001 101 011 111
(4)蝶形类型随迭代次数成倍增加
观察8点FFT的三次迭代运算: 第一级迭代,有一种类型的蝶形运算系数W08, 两个数据点间隔为1 第二级迭代,有二种类型的蝶形运算系数W08、 W28,参加 运算的两个数据点间隔为2。 第 三 级 迭 代 , 有 四 类 蝶 形 运 算 系 数 W08 、 W18 、 W28、W38,参加运算的两个数据点间隔为4。
复乘 复加
N 2
•M
N 2
log 2
N
N • M N log2 N
而直接运算时则与N2 成正比。 例 N=2048 , N2=4194304 , (N/2)log2N=11264 , N2 / [(N/2)log2N]=392.4。FFT显然要比直接法快得多。
(2)原位计算 当数据输入到存储器中以后,每一级运算
结论:每迭代一次,蝶形类型增加一倍,数据
点间隔也增大一倍。
每一级的取数间隔和蝶形类型种类均为2i-1,
i=1,2,…M。
3、按频率抽取的FFT(按输出X(k)在频域的顺序上属于 偶数还是奇数分解为两组)
对于N=2M情况下的另外一种普遍使用的FFT结构是 频率抽取法。
对于频率抽取法,输入序列不是按偶奇数,而是按 前后对半分开,这样便将N点DFT写成前后两部分:
1、DFT运算的特点:
首先分析有限长序列 x(n)进行一次DFT运算所需的运算量。
N 1
X (k ) DFT [x(n)] x(n)wNnk
n0
k 0,1, , N 1
一般,x(n)和wnkN都是复数,因此,每计算一个X(k)值,要进 行N次复数相乘,和N-1次复数相加,X(k)一共有N个点,故完成 全部DFT运算,需要N2次复数相乘和N(N-1)次复数相加,在 这些运算中,乘法比加法复杂,需要的运算时间多,尤其是复数 相乘,每个复数相乘包括4个实数相乘和2个实数相加,例
)
Gk
WNk
H
k ,
k 0,1, N 1 2
依此类推,G(k)和H(k)可以继续分下去,这种按时间抽 取算法是在输入序列分成越来越小的子序列上执行DFT
运算,最后再合成为N点的DFT。
蝶形信号流图
将G(k)和H(k) 合成X(k)运算可归结为:
a bW a bW
a
a+bW
W
a
a+bW
b -W
N1
X (k ) { Re[x(n)]Re wNnk Im[x(n)]Im[wNnk ] j Re[x(n)]Im wNnk Im[x(n)]Re wNnk }
n0
又每个复数相加包括2个实数相加,所以,每计算一个 X(k)要进 行4N次实数相乘和2N+2(N-1)=2(2N-1)次实数相加,因此, 整个DFT运算需要4N2实数相乘和2N(2N-1)次实数相加。
n0
N / 21
X (2r 1) [x(n) x(n N / 2)]WNn(2r1)
n0
N / 21
[x(n) x(n N / 2)]WNnWNnr/2 n0
令 a(n)=x(n)+x(n+N/2) b(n)=[x(n)-x(n+N/2]wnN
这两个序列都是N/2点的序列,将其代入上两式,得
FFT算法的基本思想:
考察DFT与IDFT的运算发现,利用以下两个特性可减少运
算量: 1)系数
wNnk
j 2 nk
e N 是一个周期函数,它的周期性和对称
性可用来改进运算,提高计算效率。

wn(N k) N
wk(N n) N
w nk N
又如
w
N N
/
2
1,
因此
w(kN / 2) N
wNk
利用这些周期性和对称性,使DFT运算中有些项可合并;
偶数n 0
奇数n 1
N / 21
N / 21
x(2r
)
w2rk N
x(2r 1)wN(2r1)k
r 0
r 0
N / 21
N / 21
x (2r)wN2rk wNk x(2r 1)wN2rk
r 0
r 0
因为
wN2n
j 2 2n
e N
j 2 n
N
e 2
wNn
2

N /
N /
X k
2)利用
w
nk N
的周期性和对称性,把长度为N点的大点数的
DFT运算依次分解为若干个小点数的DFT。因为DFT的计算量正
比于N2,N小,计算量也就小。
FFT算法正是基于这样的基本思想发展起来的。它有多种形式,
但基本上可分为两类:时间抽取法和频率抽取法。
2、按时间抽取的FFT(N点DFT运算的分解) 先从一个特殊情况开始,假定N是2的整数次方,
由于这种方法每一步分解都是按输入时间序列是属 于偶数还是奇数来抽取的,所以称为“按时间抽取法 ”或“时间抽取法”。
按时间抽取的8点FFT
时间抽取法FFT的运算特点:
(1)蝶形运算 (2)原位计算 (3)序数重排 (4)蝶形类型随迭代次数成倍增加
(1)蝶形运算 对于N=2M,总是可以通过M次分解最后成为2点的 DFT运算。这样构成从x(n)到X(k)的M级运算过程。 从上面的流图可看到,每一级运算都由N/2个蝶形运 算构成。因此每一级运算都需要N/2次复乘和N次复加 ,这样,经过时间抽取后M级运算总共需要的运算:
相关文档
最新文档