您的位置:首页 > 其它

快速卷积

2015-08-04 13:18 204 查看


快速卷积(FastConvolution)原文地址:Fast Convolution。吐血的翻译水平。

2015.08.03

快速卷积
1.5版:2004年07月21日下午12点格林尼治时间
Douglas L. Jones
这项工作是由连结项目(The Connexions Project)提供,并由知识共享署名许可(Creative Commons Attribution)授权。
摘要
用快速傅立叶变换(FFT)实现卷积的快速计算。

快速卷积

1 快速循环卷积




相当于




可以表示为



复杂度

卷积法的复杂度

N2次复数相乘。
N(N – 1)次复数相加。

快速傅立叶变换的复杂度

3 FFTs + N次乘法(3个傅立叶变换加上N次乘法)。


次复数相乘。


次复数相加。

如果

能被提前计算,通过FFT实现卷积计算的复杂度将只会有2 FFts + N次乘法。

2 快速线性卷积

DFT1能实现循环卷积。要实现线性卷积,必须用填补0序列的方式使得卷积后循环迂回部分为0。

要想通过快速循环卷积得到线性卷积,必须用0补齐DFTs的长度到




Figure 1



Figure 2



Figure 3

选择一个N(通常是2的指数且刚好大于L+ M – 1)通过离散傅立叶变换来实现快速卷积



注意:与循环卷积相比,在DFTs2中添加了更多的0。尽管如此,与直接计算法相比,复杂度仍旧会节约



2015.08.04

3 运行卷积

对于一个时域的滤波器程序,如果

或者

,就有高效的方法来快速计算卷积。

3.1 重叠保留(OLS)方法

一个长度为M的滤波器

和一个信号

的长度为N的部分作循环卷积时,计算结果的前M – 1部分数据为

参与计算部分后M
– 1部分数据,因此计算结果是不正确的。然而,对于结果的

部分,所发生的卷积为线性卷积,这部分计算是正确的。因此,对于长度为N的循环卷积中,只有N – M + 1部分的计算结果是正确的。

重叠保留法(The Over-Save Method):将一个长信号序列分成N块连续的信号序列,每块信号序列的前M – 1部分跟前一块信号序列的后M – 1重叠(第一块信号序列前可补M – 1个0)。然后再用滤波器

来做循环卷积,将每次循环卷积的结果的前M – 1部分去掉,并依次将每次卷积结果连接在一块就能得到正确的



计算长度为N的信号序列所耗复杂度相当于计算2nFFT(假设提前计算了H(k))+2FFTs以及N次乘法


次复数乘法


次复数加法

对于M元,直接卷积时的每次输出都有M – 1次加法。对于一个给定的M,通过寻找操作次数最小时的N值来使得计算过程最优。一般来说,最优的N值处于



3.2 重叠相加(OLA)方法

为长度为L的信号序列块添加M – 1个0。

以重叠M – 1的部分的方式连续相加每一个序列,以去掉循环卷积时所重叠的M – 1部分而得到线性卷积。这个操作的复杂度为:2个长度N = L + M – 1的FFTs,每输出L点的M元的M – 1次加法;基本跟OLS方法的复杂度相同。



Figure 4



Figure 5



Figure 6
[math translate note]
[2015.08.04-13:18]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: