i
快速卷积中嵌套算法的设计与实现
摘 要
离散富里叶变换(DFT)和卷积计算在图象、数字信号处理中起着重要的作用,
因此对快速算法的研究早就引起人们足够的重视。针对卷积算法的计算进行深入
研究,发现在离散卷积计算过程中的计算量会随着输入信号序列的长度而急速增
加,传统的卷积计算算法已不能满足要求,本文研究了如何将一维卷积变换成二
维卷积或多维卷积,而多维卷积中由包含简单的一维卷积,从而进行嵌套计算。
研究了利用短卷积嵌套计算长卷积的算法,最终实现 16 点循环卷积嵌套算法,
大幅度减少了卷积的计算量。
关键词:卷积,快速,嵌套
ii
Design and implementation of the nested
algorithm of fast convolution
Abstract
Discrete Fourier Transform (DFT) and convolution calculation plays an
important role in the image, a digital signal processing, and therefore the study of fast
algorithms have attracted enough attention. Through the In-depth study of the
convolution algorithm, we find the calculation of the convolution calculation will
increases with the length of the rapid of the input signal sequence. Conventional
convolution calculation algorithm can’t meet the requirements. This paper studies
how the one-dimensional convolution transform into a multi-dimensional convolution
or two-dimensional, and multi-dimensional convolution include simple
one-dimensional convolution. Using short convolution calculate long convolution,
and finally achieving 16 points nested circular convolution algorithm, significantly
reducing the computation of convolution.
Key Words: convolution;fast,;nested
目 录
摘 要 .............................................................i
Abstract ...........................................................ii
第一章 绪论 .........................................................1
1.1 课题研究背景 .................................................1
1.2 快速卷积算法的发展历史 .......................................3
1.3 课题研究内容 .................................................4
第二章 快速卷积算法运算中的问题 .....................................5
2.1 数字信号处理中的计算问题 .....................................5
2.1.1 滤波和相关 .............................................5
2.1.2 离散傅里叶变换 .........................................8
2.2 算法序列 ....................................................11
第三章利用短卷积嵌套计算长卷积算法原理简介 .........................13
3.1 二维卷积与多维卷积 ..........................................13
3.2 Agarwal-Cooley 卷积算法 .....................................19
3.3 分裂算法 ...................................................28
第四章 快速卷积嵌套算法实现 ........................................34
4.1 16 点循环卷积算法实现 .......................................34
4.2 算法性能分析 ...............................................35
第五章 总结 ........................................................37
参考文献 ...........................................................38
1
第一章 绪论
1.1 课题研究背景
随着大规模集成电路、计算机和数字信号处理器(DSP)的快速发展,数字
信号处理技术已得到广泛应用。然而在许多具体的应用场合需要处理的数据量和
计算量都是巨大的,特别是在某些实时性要求较高的应用领域,对信号的处理速
度是苛刻的。当然可以设计研制速度更快的处理器来满足要求,但研制新的处理
器需要较大的投入和较长的研制时间,况且还有赖于技术的进步。
另一种方案就是设计高效的算法使计算量降到可以接受的水平,实际上也
正是出现了著名的离散傅里叶变换(DFT)的快速算法(FFT)后,数字信号处理
技术才迅速发展起来并走向实用的。
通常我们在表达一个算法的时候是以一种人们容易理解的方式表达出来的,
然而这种表达方式计算起来并不高效,需要用较多的乘法和加法次数;另外一种
表示方法就是从计算效率的角度来表示一个算法,但这种表达方法往往又会使得
表达式变得让人难于理解。
例如,我们要计算下面一个表达式的值
A
A ac ad bc bd= + + +
(1-1)
如果按照这个表达式计算需要 4 次乘法和 3 次加法,不难看出上面的表达
式也可写成
( )( )A a b c d= + +
(1-2)
这样只需要 1 次乘法和 2 次加法就可以了。另一个典型的例子是计算两个
复数的乘积
( ) ( )e jf a jb c jd+ = + × +
(1-3)
其中
e ac bd= -
f ad bc= +
直接计算需要 4 次乘法和 2 次加法,如果
把它们写成
2
( ) ( )e b a c b d c= + - +
( ) ( )f b a c a d c= + + -
(1-4)
则需要 3 次乘法和 5 次加法就可以了,通常 DSP 计算乘法要比计算加法来
得复杂。如果 c 和 d 都是常数,那么
d c+
和
d c-
可以预先计算好,这样只需要 3
次乘法和 3 次加法。这个复数乘法也可用矩阵表示
e c d a
f d c b
-
é ù é ù é ù
= ×
ê ú ê ú ê ú
ë û ë û ë û
(1-5)
按照第二个算法还可以写成
0 0 1 1
1 0 1
0 ( ) 0 1 0
1 1 0
0 0 ( ) 0 1
c
e a
d c
f b
d c
é ùé ù
-
é ù é ù é ù
ê úê ú
= - ×
ê ú ê ú ê ú
ê úê ú
ë û ë û ë û
+
ê úê ú
ë ûë û
(1-6)
或写成简洁的形式
e a
CMA
f b
é ù é ù
= ×
ê ú ê ú
ë û ë û
(1-7)
矩阵 A 与向量
[ ]
T
a b
相乘只是一些加法运算,因此称 A 为前加矩阵;矩阵
M 为一对角阵,它代表了算法中的所有乘法运算;C 则称后加矩阵。
如果将
,a b
作为一个系统的输入数据,
,e f
作为系统的输出数据。那么,这
个算法可描述为:首先将输入数据进行一系列的加法运算,然后是一些乘法运算,
最后又是一系列的加法运算。今后我们介绍的快速算法大多可以用这种矩阵结构
表示,即它的中间是一个对角矩阵表示乘法运算,两边的矩阵元素是 1,0,-1
等简单的数,表示加法运算。
我们再来看两个矩阵相乘的问题
设
C AB=
,
, ,
m l l n m n
A F B F C F
´ ´ ´
Î Î Î
,其中 F 为某一数域,则 C 的元素
1
l
ij ik kj
k
c a b
=
= ×
å
,
1, , ; 1, ,i m j n= =L L
(1-8)
若直接计算,每计算一个 C 中的元素就需要
l
次乘法和
( 1)l -
次加法,因此
总共需要
lmn
次乘法和
( 1)l mn-
次加法。现在我们来改进这个算法,使得乘法次
数几乎减少一半,而加法次数略有增加。利用下面的恒等式