Cross-Correlation
互相关(Cross-Correlation) 是信号处理里用来衡量两个信号在不同时间偏移下有多相似的一种运算。
原理
假设我们有一段短录音(想找的内容),和一段长录音(可能包含它的完整录音)。其中,短录音$x$包含三个采样点,即$x=[1,2,3]$,长录音包含六个采样点 $y=[0, 1, 2, 3, 0, 0]$.可以观察到,$y$ 的第 2 到第 4 个点正好是$[1,2,3]$,和$x$完全一致。互相关要做的就是自动找出这个位置。
为此,我们可以逐一比对$y$中和$x$相同长度的片段。那么,如何比对呢?如何量化不同片段的相似程度呢?根据柯西-施瓦茨不等式: \begin{equation} |\langle x, y \rangle| \leq \|x\| \|y\| \end{equation} 我们可以$x$把以第$k$个数字起点的向量$y_k$进行点积,根据柯西-施瓦茨不等式,当$x$和$y_i$相等时,能取得最大值,因此
- 当$k=0$时,互相关度$R_{xy}[0]=1 \times 0+2 \times 1+ 3 \times 2 =8$;
- 当$k=1$时,互相关度$R_{xy}[1]=14$;
- 当$k=2$时,互相关度$R_{xy}[2]=8$;
- 当$k=3$时,互相关度$R_{xy}[3]=3$;
因此,互相关值在$k=1$时取得最大值,我们就可以定位到$y$片段中,和$x$相关度最高的片段。我们把上面的关系总结如下: \begin{equation} R_{xy}[k] = \sum_{n=-\infty}^{\infty} x[n] \, y[n+k] \end{equation}