【发布时间】:2011-07-01 23:19:00
【问题描述】:
是否有关于重叠处理的任何好的(如果可能的科学)资源(网络或书籍)。我对在分析信号时使用重叠处理和窗口的效果不感兴趣,因为要求不同。更多的是关于以下实时情况:(我目前正在处理音频信号)
- 将信号分成更小的部分。
- 创建重叠窗口。
- 对窗口块进行 FFT。
- 在频域中进行处理。
- IFFT 结果。
- 将块放在一起形成一个连续的流。
我对所使用的窗口对结果误差的影响以及重叠长度的影响特别感兴趣。但是,我找不到任何详细处理该主题的好资源。有什么建议吗?
编辑:
经过一些讨论是否适合使用窗口函数,我找到了一个不错的讲义,解释了重叠和添加/保存方法。 http://www.ece.tamu.edu/~deepa/ecen448/handouts/08c/10_Overlap_Save_Add_handouts.pdf
但是,在进行了一些测试之后,我注意到窗口版本在大多数情况下会比重叠和添加/保存方法更准确。有人可以证实这一点吗? 不过,我不想就计算时间得出任何结论......
编辑2:
以下是我的测试中的一些图表:
我创建了一个信号,它由三个余弦波组成
我在时域中使用了这个过滤器功能进行过滤。 (它是对称的,因为它应用于 FFT 的整个输出,对于实际输入信号也是对称的)
IFFT 的输出如下所示: 可以看出,低频比中频衰减得更多。
对于重叠添加/保存和加窗处理,我将输入信号分成 8 块,每块 256 个样本。重新组装后,它们看起来像这样。 (样品 490 - 540)
可以看出,重叠添加/保存过程与窗口版本的不同之处在于块放在一起(示例 511)。这是在比较窗口化进程和重叠添加/保存时导致不同结果的错误。窗口化进程更接近于在一个大垃圾中处理的进程。
但是,我不知道他们为什么在那里,或者他们根本不应该在那里。
【问题讨论】:
-
这是一个有趣的页面,但是他们更关注将频域中的信号划分为较小的频带并处理它。它更多的是创建滤波器频带,而不是在频域中处理连续的时域信号(这是我正在寻找的)。
-
Udo Zoelzer 是在这个领域工作的人。 “谷歌搜索”他可能会有所帮助。
-
快速卷积是与您正在寻找的东西相关联的另一种方式。
-
我在stackoverflow.com/questions/2929401/… 和stackoverflow.com/questions/3775912/fourier-space-filtering 中写了几个重叠保存处理的例子。根据我的经验,了解正在发生的事情的最佳方法是绘制时域中每个块的中间结果。
标签: audio signal-processing fft overlap