在离散卷积中包装响应函数的负时间的目的是什么?

信息处理 离散信号 卷积 反卷积
2022-02-12 00:25:50

我试图合理化在基于傅里叶的卷积和反卷积部分的 C 中的数值食谱中给出的数字。

作者展示了具有零中心响应函数 r(t) 的连续卷积的示例。对连续信号进行卷积模糊了边缘并且没有偏移。

有点令人困惑的是,他们建议将离散卷积模拟为连续卷积,我们应该将响应函数的负时间部分包裹到数组的最右端。进行 N/2 循环移位的数学理由是什么,其中 N 是偶数个样本。作者没有提到 N/2 循环移位,但似乎这就是他们正在做的事情。

这些是他们的实际数字。

在此处输入图像描述

似乎作者建议将零中心响应循环移动 N/2(N 是偶数)以获得与连续卷积等效的卷积。为什么我们不能有响应函数的离散版本,如我在 MATLAB 中绘制的平方标记所示?如果我们按照 Numerical Recipes 中的建议将方波与左右采样响应函数进行卷积,我不会得到等效的卷积结果。

在此处输入图像描述

1个回答

这是关于零相位滤波的。

一、连续时间响应函数r(t)是一个偶对称非因果滤波器,因此其傅里叶变换将是一个零相位函数;IE, R(ω)是频率的实值函数ω.

注意图13.1.1几乎有错误;输出应该在之前开始t=0,即使是零相位滤波器。因为这是一个非因果过滤器,它会在它们发生之前预测未来的输入,并在之前输出响应t=0. 然而,我认为,他们想通过改变输入来证明这种情况的合理性s(t)充分向右(或假设s(t)=0直到t=t1) 使之前的输出响应t=0无论如何都会为零,因此最终我们对滤波器的输出感兴趣,从t=0.

现在,对信号进行采样s(t)r(t)(假设它们是带限的)并通过执行离散时间线性卷积获得连续时间输出的采样版本,或者等效地使用基于 DFT 的线性卷积的有效实现,通过适当长度的循环卷积。

如果您选择第一种方法,并使用序列执行直接离散时间线性卷积s[n]r[n], 那么你就不需要改变任何东西了。但请记住,实际实现仍需要一些转变来表示非因果脉冲响应r[n]在适当的索引框架中。

但是如果你选择第二种方法;使用 DFT 实现线性滤波,滤波器响应有两种选择r[n]进行注册;(因为在 DFT 域中,没有负时间索引n,并且您被限制在范围内0n<N) 首先你可以线性移位r[n]足够正确,使其成为因果过滤器rc[n],并照常执行程序;通过这种选择,有效的离散时间滤波器将失去其零相位(和零群延迟)属性,并且您的有效输出从群延迟位置索引开始。

相反,如果您将负索引部分包装起来r[n]到它的最右边,在 DFT 框架中N样本,其中N正确选择以避免时域中的混叠,以确保计算的循环卷积将匹配所需的线性卷积,然后您将保持零相位属性r[n]在执行基于 DFT 的卷积时;你的第一个输出在n=0将是你会得到的t=0在连续时间的情况下。