按频率抽取的快速傅里叶变换
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数字信号处理》
课程设计报告
按频率抽取的DFT快速算法分析及MATLAB实现
专业:通信工程
班级:
组次:
姓名:
学号:
目录
摘要 (1)
关键字 (1)
0 引言 (1)
1 按频率抽取的DFT快速算法原理 (1)
2 DIF-FFT的运算规律及编程思想 (2)
2.1 原位计算 (2)
2.2 序列的倒序 (2)
2.3 旋转因子的变换规律 (2)
2.4 蝶形运算规律 (4)
2.5 编程思想及程序框图 (4)
3 DIF-FFT算法运算量分析 (5)
4 MATLAB程序实现 (5)
5 结束语 (7)
参考文献 (7)
按频率抽取的DFT 快速算法分析及MATLAB 实现
摘要:DFT 是数字信号分析与处理中的一种重要变换。但直接计算DFT 的计算量与变换区
间长度N 的平方成正比,计算量非常大。DFT 的快速算法使运算效率提高了1~2个数量级,为数字信号处理技术应用于各种信号的实时处理创造了条件。为了对FFT 有更加深入的了解,本文对DIF-FFT 的原理进行了分析,并给出MATLAB 程序实现的方法与步骤。 关键词:DFT;DIF-FFT;MATLAB;
0 引言
DFT 是数字信号分析与处理中的一种重要变换。但直接计算DFT 的计算量与变换区间长度
N 的平方成正比,计算量非常大。DFT 的快速算法使运算效率提高了1~2个数量级,为数字信号处理技术应用于各种信号的实时处理创造了条件。本文通过对按频率抽取的DFT 快速算法原理介绍与MATLAB 实现以期使我们对傅里叶快速算法有更全面的理解,为我们以后更复杂的快速算法学习打下基础。
1 按频率抽取的DFT 快速算法原理
设序列x(n)的长度为M N 2=,将序列前后对半分开,得到两个子序列,如下:
式中:k kN N
W )1(2
/-=
将x(k)分解成偶数组与奇数组,当k 取偶数(k=2m,m=0,1,…,N/2-1)时:
∑∑
-=-=++=++=
1
2/0
2/1
2/0
2)]2()([)]2()([)2(N n mn
N N n mn N W N n x n x W N n x n x m x (1)
当k 取奇数(k=2m+1,m=0,1,…,N/2-1)时,
∑∑
-=-=+⋅+-=+-=
+12/0
2/1
2/0
)12()]2()([)]2()([)12(N n nm
N n N N n m n N W W N n x n x W N n x n x m x (2)
nk N N n Nk N k
N n N
N n nk
N N n N N n nk
N N n nk N
N n nk N
W W N n x n x W N n x W n x W n x W
n x W
n x k X ∑∑∑∑∑∑-=⎪⎭⎫ ⎝⎛
+-=-=-=
-=-=⎥⎦⎤⎢⎣⎡⎪⎭⎫ ⎝⎛++=
⎪⎭
⎫ ⎝⎛
+
+=
+=
=12
02/212
0120
1
2
1
012
02)(2)()()()()(
令:
⎭
⎬⎫+
+=+-=)2
()()()]2()([)(12N
n x n x n x W N n x n x n x n N 其中, n=0,1,2,…,N/2-1 将)()(21n x n x 和分别代入(1)、(2)式,可得:
⎪⎭
⎪⎬⎫∑
∑-=-==
=+1
2/0
2
/112/02/2)()2()()12(N n mn
N N n nm
N W n x m X W n x m X (3)
(3)式表明,X(k)按奇偶k 值分为两组,其偶数组是)(1n x 的N/2点DFT ,奇数组则是)(2n x 的N/2点DFT 。)(1n x 、)(2n x 和x (n )之间的关系可以用图1所示的蝶形运算流图符号表示。图2表示N=8的DIF-FFT 运算流图。
图1 DTF-FFT 蝶形运算流图符号
图2 DIF-FFT 的运算流图(N=8)
-1
x (n )x (n +N / 2)n
N W x (n )+x (n +N / 2)
[x (n )-x (n +N / 2)]n N W -1-10N
W 2N W x (0)x (1)x (2)x (3)-1-1x (4)x (5)x (6)x (7)0
N
W 1N W 2N W 3N W X (0)X (4)
X (2)X (6)X (1)
X (5)X (3)X (7)
N W 2N W -1-1-1-1-1-1-1-10
N
W 0
N W 0N
W 0
N
W
2 DIF-FFT 的运算规律及编程思想 2.1 原位计算
M N 2=点的FFT 共进行M 级运算,每级由N/2个蝶形运算组成。同一级中,每个蝶形的
两个输入数据只对计算本蝶形有用,而且每个蝶形的输入、输出数据结点又同在一条水平线上,这就意味着计算完一个蝶形后,所得输出数据可立即存入原输入数据所占用的存储单元。这样,经过M 级运算后,原来存放输入序列数据的N 个存储单元中便依次存放X (k )的N 个值。原位计算可节省大量内存,从而使设备陈本降低。
2.2 序列的倒序
由图2可知,DIF-FFT 算法输入序列为自然序列,而输出为倒序排列。因此M 级运算完
后,要对输出数据进行倒序才能得到自然顺序的X(k)。图3为顺序与倒序二进制对照图。
图3 顺序与倒序二进制对照图
2.3 旋转因子的变换规律
N 点的DFT 快速傅里叶运算流图中,每级都有N/2个蝶形。每个蝶形都要乘以因子P
N W ,
称其为旋转因子,P 为旋转因子的指数。但各级的旋转因子和循环方式都有所不同。为了编
写计算程序,下面列出旋转因子P N W 与运算级数的关系。用L 表示从左到右的运算级数
(L=1,2,…,M ),第L 级共有1
2
-L 个不同的旋转因子。
顺序
倒序
十进制数I
二进制数 二进制数 十进制数J
0 000 000 0 1 001 100 4 2 010 010 2 3 011 110 6 4 100 001 1 5 101 101 5 6 110 011 3 7
111
111
7