是否有关于重叠处理的任何好的(如果可能是科学的)可用资源(网络或书籍)。我对分析信号时使用重叠处理和窗口的效果不太感兴趣,因为要求不同。更多的是关于以下实时情况:(我目前正在处理音频信号)
- 将信号分成更小的部分。
- 创建重叠窗口。
- 对加窗块进行 FFT。
- 在频域进行处理。
- 对结果进行 IFFT。
- 将这些块放在一起形成一个连续的流。
我特别感兴趣的是所使用的窗口对所产生的误差的影响以及重叠长度的影响。然而,我找不到任何详细讨论该主题的好资源。有什么建议么?
Edit:
经过一番讨论后,我找到了一份不错的讲义,解释了重叠和添加/保存方法。http://www.ece.tamu.edu/~deepa/ecen448/handouts/08c/10_Overlap_Save_Add_handouts.pdf http://www.ece.tamu.edu/~deepa/ecen448/handouts/08c/10_Overlap_Save_Add_handouts.pdf
然而,在做了一些测试之后,我注意到窗口版本在大多数情况下比重叠和添加/保存方法执行得更准确。有人能证实这一点吗?
不过,我不想就计算时间得出任何结论......
Edit2:
以下是我的测试中的一些图表:
I created a signal, which consists of three cosine waves
I used this filter function in the time domain for filtering. (It's symmetric, as it is applied to the whole output of the FFT, which also is symmetric for real input signals)
The output of the IFFT looks like this: It can be seen that low frequencies are attenuated more than frequency in the mid range.
For the overlap add/save and the windowed processing I divided the input signal into 8 chunks of 256 samples. After reassembling them they look like that. (sample 490 - 540)
可以看出,重叠添加/保存过程在块被放在一起的点上与窗口版本不同(样本511)。这是在比较窗口处理和重叠添加/保存时导致不同结果的错误。窗口化进程更接近于在一大垃圾中处理的进程。
然而,我不知道他们为什么在那里,或者他们是否根本不应该在那里。