卷积和互相关操作的关系
本文首发于算法社区,转载请注明出处,谢谢。
前言
卷积和互相关操作在数字信号处理中都是非常重要的公式,卷积是迟缓线性时不变系统的输出响应,而相关操作则在系统识别方面非常有用,现在就来讲讲卷积和相关操作之间的关系。
卷积操作
首先,给出卷积公式
\(y\bigl(n\bigr)=\sum\limits_{k=-\infty}^\infty x\bigl(k\bigr)h\bigl(n-k\bigr)\)
卷积公式的计算步骤:
- 折叠(Folding):对 h(k) 关于 k = 0(时间原点)折叠获得 h(-k)。
- 移位(Shifting):对 h(-k) 向右(向左)移位 n0 个时间单位;如果 n0 是正数,获得 h(n0 - k)。
- 相乘(Multiplication):x(k) 乘以 h(n0 - k) 获得乘积序列 v_n0(k) = x(k) h(n0 - k)。
- 相加(Summation):相加乘积序列 v_n0(k) 的所有值,得到在 n = n0 的输出。
上述4个步骤计算出了在时间 n = n0 时刻的输出值,当时间为 -∞ < n < +∞ 也就是有个不同的 n0,此时需要重复步骤 2 到步骤 4 来计算得出所有的系统响应输出。
说明:从卷积公式,我们可以看出,当系统是因果的(往往也是如此),那么系统的脉冲响应 h(n) = 0, n < 0,所以此时在卷积公式中,h(n - k) 的值不会超过当前所要计算的时间 n,也就不会出现将来值,也就是说,在计算时是安全的。从这个角度来理解卷积公式可以知道,因果系统的当前时刻的输出只与过去和当前时刻的输入有关。
有关卷积操作其他的知识请详看数字信号处理相关的书籍和文献。
互相关操作
和卷积公式一样,我们先给出互相关操作的定义:
\(x_{xy}\big(I\big)=\sum\limits_{x=-\infty}^{\infty}x\big(n\big)y\big(n-I\big)I=0,\pm 1,\pm 2,...\)
其中,x(n),y(n)是两个有限能量的实信号序列。
说明:有限能量的信号序列保证了序列 x(n),y(n) 互相关的存在性。
互相关序列的计算:
- 移位:对 y(n) 向右移位 l 个时间单位,l = 0,-1,1,-2,2....。
- 相乘:x(n) 乘以 y(n - l) 获得乘积序列 v_l(n) = x(n) h(n - l)。
- 相加:相加乘积序列 v_l(n) 的所有值,得到在偏移量为 l 的输出。
相对照卷积公式,很明显,互相关操作缺了卷积公式的计算步骤一:折叠操作。
既然互相关的计算和卷积的计算这么相似,那么我们能否使用卷积公式来直接计算互相关的序列呢?答案是肯定的。
使用卷积公式计算互相关序列
要使用卷积公式,那就必须要有 折叠 操作,所以我们可以先把 互相关公式 涉及的 y(n) 序列进行折叠,形成 y(-n),这样,使用序列 x(n) 和新序列 y(-n) 来计算它们的卷积。卷积步骤一:折叠,即 对 y(-n) 进行折叠,也就得到 y(n),这个就是互相关公式的序列 y(n),如此,就使用了卷积公式来计算互相关序列了。具体(简写形式)如下:
\(r_{xy}(I)=x(I)*y(-I)\)
其中,y(-l) 在卷积公式中就是 y( -l + n),是对 y(-n) 折叠之后进行移位 l 个单位所得。
所以,基本上卷积计算和互相关计算的关系就是这样了,如有什么疑问或错漏,可在评论区留言,欢迎交流。