循环卷积和线性卷积以及快速卷积计算

本文探讨了在实时音视频处理中,如何通过DFT(FFT)计算线性卷积,特别是针对block AEC(回声消除)。通过深入分析循环卷积、overlap save和overlap add算法,解释了为何在特定情况下,圆卷积可以转化为线性卷积。overlap add通过补零实现,而overlap save则是结合上一帧数据进行卷积并丢弃部分结果。这两种方法在数值精度、运算次数及避免 aliasing 方面存在差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

做block AEC 的时候看不懂对w补零,x加入上一帧,fft和ifft计算后舍弃前一半数据的操作。深入调查了一下循环卷积和overlap save。
https://www.zhihu.com/question/25525824中表示,循环卷积我理解是使用DFT(FFT)计算线性卷积时的衍生品。首先连续时间没有循环卷积概念,因为用FFT的时候在频率维度采样,照成时域延拓,因此FFT频域相乘等价于时域延拓后的两个序列的卷积,也就是圆卷积!
https://blog.robertelder.org/overlap-add-overlap-save/
中动态描述了overlap save和 overlap add 算法。 overlap add很好理解,就是每个frame补零,使得N>=L+M-1(两个序列之和-1),此时圆卷积的结果就是线性卷积。
overlap save 还是很不好理解,因为它依然使用了圆卷积。表现为前面补入上一帧的数据,两帧的数据与滤波器进行圆卷积,然后丢弃前一半的结果,得到线性卷积。(可以理解成当前帧的输出等于上一帧数据和这一帧数据的圆卷积)
对了,圆卷积可以通过矩阵运算计算,非常直观。可以看到overlap add 右上角由于补0都是不参与计算的。

他们的不同如下所示,
Here is a simple summary of differences between overlap add and overlap save th

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值