FFT在卷积中的应用
两个函数的卷积是一个非常有意义的物理概念,在谐波分析和图象处理等许多科学领域都有重要应用。在FFT出现之前,关于卷积的计算,与DFT一样,忍受着沉重的计算负担。为此,本节将讨论卷积以及利用FFT对离散卷积的计算问题。
§4.1 卷积
假设x(t)和h(t)是定义在实轴上的实值或复值函数,则x(t)与h(t)的卷积简记为x(t)*h(t),且由以下积分确定
(56)
这里的运算符“*”是一个抽象的数学符号。利用变量代换,不难发现“*”是可交换的,即
x(t)*h(t)=h(t)*x(t) (57)
因为卷积的原理特别不易想象,让我们用图6作一简单解释。
图6中(a)和(b)分别给出了函数x(t)和h(t)。在进行积分前必须形成h(t-τ),图6中(c)和(d)两图显示了这一过程。可以看出这些运算都有很简单,首先绕原点折叠h(τ)给出h(-τ),再将这个函数平移t。然后,对任意给定的t值,将x(τ)与 h(t-τ)相乘,并从负无穷到正无穷对乘积积分,x(τ)与 h(t-τ)的积是图6中(e)的阴影部分。于是,我们有
结果如图6中的(f)所示。
在现代科学分析领域,也许最重要和最强有力的工具就是卷积与傅立叶积分之间的关系,它允许从空域的一个抽象运算转换成频域的一个简单数学乘法。换句话说,如果x(t)和h(t)的傅立叶变换分别是X(f)和H(f),则x(t)*h(t)的傅立叶变换就是X(f)和H(f)的乘积,即
x(t)*h(t)↔X(f)H(f) (58)
下面我们就来推导这个公式,对方程(56)两边作傅立叶变换,得
上述积分主要利用了积分变换。对称地,我们也可以证明如下的傅立叶变换对
x(t)h(t)↔X(f)*H(f) (59)
trackback: http://class.htu.cn/SZBJ/6/6_40.htm
(58)和(59)式普遍称为卷积定理。应用卷积定理常可以降低问题的复杂性,譬如,可以利用卷积定理给出帕塞瓦尔等式的一个简单推导。由于
,
置σ=0,上式可简化为
(60)
最后一个等式是利用了H(f)的实部和虚部的奇偶性,即当h(t)是实函数时,H(f)的实部是f的偶函数,虚部是f的奇函数。
§4.2 离散卷积
假设{x(k)}和{h(k)}是以N为周期的周期点列,即x(k)和h(k)满足:
(64)
则x(k)和h(k)的离散卷积定义为
(65)
自然我们希望,由(65)式定义的离散卷积也有与与连续卷积相类似的性质,答案是肯定的,我们可以得到如下的关系式:
x(k)*h(k)↔X(n)H(n) (66)
于是上式把一较复杂的数学运算转化为一简单的乘法运算。证明这个结论需要所谓的拟正交条件:
下面我们就来推导(66)式:
这正表明了两个周期序列离散卷积的傅立叶变换等于其相应的两个离散傅立叶变换的积。类似地,如果定义
我们还可以得到
x(k)h(k)↔X(n)*H(n)/N (67)
(66)式和(67)式统称为离散卷积定理。利用离散卷积定理,我们可以方便地获得如下的帕塞瓦尔等式
(68)
在物理上,(68)式通常被称为能量恒等式,其中h(k)是实序列。
§4.3 离散卷积的计算
直接利用(65)式做数值计算总共需要N(N-1)个加法和N2个乘法。然而我们可以把(65)式分解为如下3步来做。
1.计算x(k) 和h(k)的离散傅立叶变换
(69)
2.计算 Y(n)=X(n)H(n)。
3.计算逆傅立叶变换:
(70)
如果引进记号Y*(n)表示Y(n)的复共轭,则
(71)
于是(70)式可改写为
(72)
则(72)式中的中括号部分恰是一个傅立叶变换。
于是简单的离散卷积公式(65)可以被上述三步所取代。这样做似乎走了许多弯路,但由于FFT的高效性,用上述三步可以有效地降低计算量,并且问题的规模越大,降低的倍数越多。