重叠添加与重叠保存


24

可以使用哪些差异或其他标准来帮助决定使用重叠添加和重叠保存进行过滤?重叠添加和重叠保存都被描述为用于使用FIR滤波器内核对数据流进行基于FFT的快速卷积的算法。延迟,计算效率或缓存局部性(等等)的差异是什么?还是一样?

Answers:


27

从本质上讲,OS效率更高一些,因为它不需要添加重叠的瞬态。但是,如果需要以零填充而不是重复的采样重用FFT,则可能要使用OA。

这是我前一段时间写的文章的快速概述

快速卷积是指圆卷积的块状使用以完成线性卷积。快速卷积可以通过OA或OS方法来完成。OS也称为“重叠报废”。在OA滤波中,每个信号数据块仅包含与允许循环卷积等效于线性卷积的样本一样多的样本。信号数据块在FFT之前被补零,以防止滤波器脉冲响应“环绕”序列的末尾。OA过滤将一个模块的输入导通瞬变与前一个模块的输入导通瞬变相加。在图1所示的OS过滤中,对输入数据不执行零填充,因此圆形卷积不等于线性卷积。“环绕”的部分无用且被丢弃。为了弥补这一点,上一个输入块的最后一部分用作下一个块的开始。OS不需要添加瞬态,因此比OA更快。


很棒的文章!=)
声子

计算OA缓冲区的零填充部分上的DFT的方式可能会有一些优化,这为OA方法提供了优势。这将取决于您的处理器和FFT软件包。另外,您可以为考虑到零填充的OA编写适合自己的FFT算法。
orodbhen

@orodbhen,您知道这样的FFT软件包吗?
Mark Borgerding '16

@MarkBorgerding在OpenCV中,您可以指定零行的数量,但这特定于2D。至于那个或其他FFT包中存在哪些隐式优化,我不知道。我可以想到很多情况,使用自定义FFT来利用稀疏性会有所帮助,但我本人并没有走这条路。还没。
orodbhen

1
您引用的好消息是因为链接断开了:(
Mehrdad
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.