我有一个信号h
要延迟一段时间t
。
我知道我可以使用两种可能的方法:
理论上应该是完全等价的(据我所知)。
从性能和精度的角度来看,两者哪个更好?数值精度或速度是否有任何权衡?
我有一个信号h
要延迟一段时间t
。
我知道我可以使用两种可能的方法:
理论上应该是完全等价的(据我所知)。
从性能和精度的角度来看,两者哪个更好?数值精度或速度是否有任何权衡?
数值精度或速度是否有任何权衡?
是的。对于采样周期整数倍的延迟,方法1的效果要好得多:它的计算效率高、位精确、易于实现并且几乎是万无一失的。
方法2的计算成本很高,您需要选择一个 FFT 长度(这不是微不足道的),它会受到数字噪声的影响,并且会产生显着的延迟。它实现了循环移位,而不仅仅是延迟,因此您需要管理容易出错的重叠、帧边界等。
非整数(或分数)延迟与蠕虫完全不同,并且非常复杂。推荐阅读:拆分单位延迟
冒着吹响我自己和我的合著者鲍勃·威廉姆森的号角的风险,还有这篇论文显示了 Ben 的答案中 FIR 链接中提到的三种技术的等效性,并且在链接到的论文中也提到了来自希尔玛的回答。
特别感兴趣的两个结果是论文的 Proposition 2 和 3,截图如下。
正如 Hilmar 所指出的,对于采样周期整数倍的延迟,方法1要好得多。
此外,方法 1 更适合实时操作,因为您不需要缓冲数据来执行 FFT。
对于采样周期的非整数倍的延迟,您可以通过使用拉格朗日系数的 FIR 或 IIR 滤波器来调整方法 1。
IIR :分数延迟全通滤波器的设计方法