为什么在DSP中使用循环卷积?
在数字处理中使用它的主要原因是什么?
为什么圆卷积的概念比线性卷积更常见?


评论

您会注意到,所有答案都提到了离散傅立叶变换,该变换通过FFT最有效地实现。 DFT固有地周期性地扩展传递给它的有限长度序列(循环的)。圆形卷积很少是目标。通常线性卷积是目标。但是将DFT的$ X [k] $和$ H [k] $相乘时,对应于传递给DFT的两个周期扩展序列$ x [n] $和$ h [n] $的循环卷积DFT。然后问题就变成了线性卷积。

#1 楼

给定具有脉冲响应$ h [n] $的离散时间LTI系统,可以通过卷积和来计算其对任何输入$ x [n] $的响应:$$ y [n] = x [n] \ star h [ n] = \ sum_ {k =-\ infty} ^ {\ infty} {h [k] x [nk]} \ tag {1} $$

没有进一步说明,上述定义为除非另有说明,否则$ h [n] $和$ x [n] $之间的线性卷积(非周期性卷积)是可能无限长的非周期性离散时间序列。这不同于在周期$ N $的两个周期序列之间并在单个周期中计算的循环卷积。

您可以通过等式1或在时域中计算线性卷积频域,使用以下DTFT(离散傅立叶变换)属性:
$$ y [n] = x [n] \ star h [n] \ implies Y(e ^ {j \ omega})= X (e ^ {j \ omega})H(e ^ {j \ omega})\ tag {2} $$

DTFT与线性卷积自然相关,因为它处理理论上存在的非周期性可能从$-\ infty $扩展到$ \ infty $的序列反映在其定义总和的限制中:
$$ X(e ^ {j \ omega})= \ sum_ {n =-\ infty} ^ {\ infty} x [n] e ^ {-j \ omega n} \ tag {3} $$

当您想手工进行计算时,请对信号使用符号表达式,例如作为$ x [n] = a ^ nu [n] $和$ h [n] = b ^ nu [n] $,您可以按照上述方法在时域或频域中计算结果。

此外,当您要使用计算机计算相同的结果时,可以使用基于LCCDE递归(对于IIR系统)或直接有限卷积和(对于FIR系统)的时域方法。 ,但是频域方法不适用于DTFT;因为它主要是用于发展信号与系统理论数学的工具,并且不适合数字计算机实现,因为它的变量$ \ omega $是一个实数。

而是使用DFT(离散傅里叶变换)定义为$$ X [k] = X(e ^ {j \ omega})| _ {\ omega = \ frac {2 \ pi k} {N}} \ tag {4} $$

其中$ k = 0,1,...,N-1 $和$ N $是DFT的长度,然后称为信号$ x [n] $的N点DFT。

式4表示DFT序列$ X [k] $是作为周期函数的DTFT $ X(e ^ {j \ omega})$的均匀样本而获得的,因此DFT $ X [k] $也是周期性的,但是我们只考虑它的第一个周期,从$ k = 0 $到$ N-1 $。由于DFT序列固有地是周期性的,因此它们的卷积将也可以是周期性的(圆形)。因此,非周期性信号$ x [n] $和$ y [n] $之间的线性卷积由I-DTFT表达式$$ y [n] = \ mathcal {I-DTFT} \ {X(e ^ {j \ omega})H(e ^ {j \ omega})\} $$而是由I-DFT表达式$$ \ tilde {y} [n] = \ mathcal { I-DFT} \ {X [k] H [k] \} $$

因此,假设我们要计算两个非周期序列$ x [n] $和$ h之间的线性卷积[n] $的长度分别为$ L_x $和$ L_h $,使用频域的$ N $点DFT,$ X [k] $和$ H [k] $,我们实际上必须计算周期$ N $的信号$ \ tilde {x} [n] $和$ \ tilde {h} [n] $的周期性扩展。

关键是选择DFT的适当长度$ N $,该长度必须足够长,以避免任何时域混叠$ \ tilde {y} [n] $的情况,由IDFT计算:$$ \ tilde {y} [n] = \ sum_ {r =-\ infty} ^ {\ infty} y [n-rN] \ tag {5} $$

其中$ y [n] $是线性逆卷积的结果,该线性卷积将由理论逆DTFT返回,而$ \ tilde {y} [n] $是逆DFT隐含的周期性(圆形)卷积的周期结果。

请注意,如果任何一个信号的长度都是无限的,则不可能使用DFT方法计算其线性卷积,因为$ N $会变为无穷大,实际上是不可能的。 >通过DFT实现线性卷积的步骤如下:


根据以下条件选择N:$$ N \ geq L_x + L_h -1 $$,这保证了从所计算圆的DFT $ Y [k] $中无逆重构逆信号$ y [n] $通过$ X [k] H [k] $卷积。
计算$ x [n] $和$ h [n] $的N点DFT $ X [k] $和$ H [k] $。
计算$ Y [k] = X [ k] H [k] $
计算$ Y [k] $的N点逆DFT以产生输出$ y [n] $


#2 楼

回答您的问题:


为什么在DSP中使用圆卷积?


在DSP中,我们通常处理有限长度的离散序列(甚至如果所研究的信号是无限的,我们一次只能分析有限的一部分)。在处理信号时,其处理方式必须可在离散逻辑设备(即无法存储连续值的设备,因为该值是无限的并且具有有限数量的内存,存储空间等)中实现。这解释了为什么不能在硬件中实现将离散时间序列转换为连续频率序列的离散时间傅立叶变换(DTFT)。时间上的线性卷积等效于2个序列DTFT的乘法,但是由于DTFT无法在硬件中实现,因此这不是获得线性卷积的方法。另一方面,离散傅立叶变换(DFT)将离散的时间序列转换为离散的频率序列,这使其可以在硬件中实现。然而,乘以2个序列的DFT原则上等效于循环卷积(如果预先在序列中填充了足够的零,则也可以得到线性卷积,请参见下面的说明)。之所以将2个序列的DFT乘以等价于循环而不是线性卷积,是因为这样的事实,即有限时间长度序列的DFT等于那个周期性地扩展的有限时间长度序列的离散傅里叶级数(DFS)。一个时间段内的无限时间长度序列(在时间轴上无限长)。 DFS在频域中也是周期性的,因此线性卷积不适用于此(请参见Oppenheim离散时间信号处理第3版的8.2.5和8.6.5)


在数字处理中使用它吗?


它是通过DFT乘法获得的,并且DFT很容易在硬件中实现。而且,存在用于计算DFT的非常高效的算法(例如FFT)


为什么循环卷积的概念比线性卷积更常见?这取决于应用程序。圆形卷积也可以产生线性卷积。例如,假设我们正在处理长度为N的信号A和长度为N的信号B(也可以针对不同的长度进行处理)。圆形卷积的长度为N。为了获得线性卷积,A和B都必须填充零,直到它们的长度至少达到2 * N-1。 DFT将为您提供线性卷积

#3 楼

这里有一些直觉:

以数字方式处理信号时,您始终会处理有限的信号。这是因为您只能处理有限数量的数据点。

但是问题是,当您使用DFT执行到频域的转换时,根据定义,信号不能是有限的。因此,在执行DFT操作时,即使信号不是周期性的,信号也会从有限变为周期性。

信号的这种周期性导致需要以循环方式使用卷积。

#4 楼

DFT / FFT是有用的计算“锤子”,但其所有变换基向量在孔径上都是圆形的(整数周期),并且可以无限扩展为周期函数,有些用户将其输入数据的性质弄混了。 br />
如果对零填充进行足够的零填充,则循环卷积会产生与线性卷积相同的结果,但计算量要比循环卷积稍大。