按频率抽取的快速傅里叶变换

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档