本
文
摘
要
引言:在前面的文章中,我们理解了DTFT与DFT的关系,接下来就是要研究DFT的应用。在DFT的应用中,利用DFT的循环卷积定理进行线性卷积的快速运算这一应用是极其重要的,理解这一重要应用,才能更加清晰理解DFT的快速运算---FFT的作用。本文将从原理入手,给出实际例子,为你细致讲解用DFT实现线性卷积快速运算的过程!
首先交代背景,我们知道,在实际的应用中,计算一个离散时间系统的输出为:输入离散时间序列和系统单位脉冲响应的线性卷积。然而,线性卷积的计算量是很大的,这牵制了计算机的运算速度,因此我们希望运用循环卷积定理,借助DFT的快速算法FFT,从循环卷积和线性卷积的关系入手,解决这一问题,快速得到系统的输出。
一.循环卷积定理
循环卷积定理指的是:两个有限长序列循环卷积的结果得DFT,等于这两个序列单独做DFT后的乘积,具体公式为下图:
之所以引入这一定理,是因为DFT存在一种快速运算---FFT(后面文章会讲到),FFT可以把计算时间大大缩短。因此只要计算出两个序列的DFT,将他们相乘,再把结果作IDFT,就可以得到两个有限长序列的循环卷积。
注意!我们的目标是求两个序列的线性卷积,因此接下来的任务是找到循环卷积的关系!
二.循环卷积和线性卷积的关系
线性卷积和循环卷积的关系要由周期卷积做过度,周期卷积为,假设 x1(n)x_{1}(n) 长度为N, x2(n)x_{2}(n) 长度为M,则选取 L≥L\geq max(N,M),以L为周期将两序列线性卷积的结果周期延拓,然后重叠部分相加,留下对应的L个点,所得即为周期卷积结果。可见当 L≥L\geq N+M-1(线性卷积长度)时,周期卷积结果等于线性卷积结果。
而两个序列循环卷积的结果长度为周期卷积后取主值(取值的点数为循环卷积的点数)。
因此,当给两个序列末尾补零,使得两个序列长度都为N+M-1,此时,做循环卷积的结果就等于线性卷积的结果。
注意笔记中波浪线的部分,可借助具体例子理解三.有限长序列与有限长序列的线性卷积计算
实际系统中,我们的系统的系统单位冲脉冲响应是确定的,假设它是有限长的 h(n)h(n) ,当输入 x(n)x(n) 也为有限长时,可用如下方法计算:
也就是,等待输入都输入完成,对两序列补零,利用循环卷积和线性卷积关系做运算,最后做IDFT得到结果四.无限长与有限长序列的线性卷积计算
如果输入是一个很长很长的序列,我们不可能等所有的点都输入进来之后,再对序列补零计算,这样等待输入的时间是很长的,对于这样的情况,我们有重叠相加法和重叠保留法,这两种方法只是对输入的切割方式不同,总体思想都是分割输入,转换为一段一段的有限长序列来计算,带来的结果是一样的,下面笔记中给出的实际例子说明了这一点!
可见两种方法得到的结果是一样的至此,我们已经知道了如何借助循环卷积和线性卷积的关系,通过循环卷积定理,利用FFT快速计算系统的输出了(无论是有限长的输入还是无限长的输入),在后面的文章中,将学习FFT的具体操作方法。