引言
互相关是信号处理中一种有用的技术,其本质是比较两个信号的相似性。该技术可以消除信号间不相关的(随机)噪声,从而降低整体噪声基底,使其适用于精确的相位噪声分析。此外,它还可用于时间上的信号匹配,因为当两个信号重叠时会产生幅度最大值。这在雷达测量中确定距离或飞行时间,或将输入信号与已知模板进行比较等应用中具有重要价值。
在本应用笔记中,我们介绍了互相关的积分形式并探讨了其物理意义。然后,我们将该表达式离散化,并讨论其在信号处理应用中的用途。最后,我们提出了互功率谱密度的概念,它是频域中互相关的等效表达式。我们使用 Moku 示波器和频谱分析仪来演示该概念的几个示例。
时域互相关
积分形式
从数学角度来说,互相关定义为两个信号乘积的积分,然后进行归一化。通常,其中一个信号会有一个可变的时延 \(\tau\),互相关就成为该时延的函数。根据信号幅度是相似还是相反,互相关函数也可以取正值或负值。首先考虑两个连续的任意函数 \(y(t)\) 和 \(x(t)\),其中 \(x(t)\) 的复共轭表示为 \(x^*(t)\)。对一段时间 \(T\) 进行平均,得到时延 \(\tau\) 的函数:
\(R_{xy} = \frac{1}{T} \int^{T/2}_{T/2}{x^*(t)y(t+\tau)dt}\) (1)
假设 \(x(t)\) 和 \(y(t)\) 在周期 T 内是严格周期的,具有任意振幅,并且它们之间存在相位差。
\(x(t) = A \sin{(\omega t)}\) (2)
\(y(t) = B \sin{(\omega t + \phi)}\) (3)
注意,实函数(例如 \(x(t)\))的复共轭是自等价的。因此,我们可以将 \(R_{xy}\) 的定义重写为:
\(R_{xy} = \frac{1}{T} \int^{T}_{0}{x^*(t)y(t+\tau)dt}\)
通过计算,我们可以代入公式(2)和(3):
\(R_{xy} = \frac{AB}{T} \int^{T}_{0}{\sin{(\omega t)} \sin{(\omega t + \phi)} dt}\)
用复数形式重写:
\(R_{xy} = \frac{AB}{T} \int^{T}_{0}{ \left( \frac{e^{i \omega t} – e^{-i \omega t}}{2i} \right) \left( \frac{e^{i \omega (t + \tau) + \phi} – e^{-i \omega (t + \tau) – \phi}}{2i} \right) dt}\)
\(R_{xy} = \frac{-AB}{4T} \int^{T}_{0}{e^{i \omega (2t + \tau) + \phi} – e^{-i \omega \tau – \phi} – e^{i \omega \tau + \phi} + e^{-i \omega (2t + \tau) – \phi} dt}\)
由于包含 t 的项是周期性的,因此对一个完整周期进行时间平均将得到零,只剩下两项:
\(R_{xy} = \frac{AB}{2} \left( \frac{e^{i(\omega \tau + \phi)} + e^{-i(\omega \tau + \phi)} }{2} \right) = \frac{AB}{2} \cos{(\omega \tau + \phi)}\)
相关函数取决于信号的时延和相位差。在零时延(\(\tau = 0\))时,当\(\phi = 0\)时,函数完全相关;当\(\phi = 180\)时,函数完全反相关。当\(\phi = 90\)时,由于函数彼此反相,相关性趋于零(见图1)。
离散形式
对于数字采样数据(例如示波器采集的数据),上述公式必须离散化。假设两个采集到的频谱包含实数 \(x[t]\) 和 \(y[t]\),其中 t 是数据点的索引。互相关函数的形式为:
\(R_{xy}[\tau] = \sum_t x[t] y[t+\tau]\)
其中参数 \(\tau\) 表示 x 和 y 之间的时间偏移量,以点数表示。
实际上,数据集 \(x[t]\) 和 \(y[t]\) 是有限的,因此函数随时间偏移的幅度也是有限的。偏移量过大时,数据集之间的重叠部分会缩小。例如,假设 \(x[t]\) 和 \(y[t]\) 各包含 1000 个点。虽然可以通过数学方法偏移 \(\tau = 999\) 个点,但此时每个数据集中只有 1 个点重叠,因此所得结果通常没有实际意义。
在这种情况下,通常的做法是采集比所需窗口大小更多的数据点。根据经验,轨迹的总长度应该是
\(N_{trace} = N_{window} + N_{lag, max} \)
这样可以确保相关函数被完全填充,而不会触及边缘。
为了比较振幅或相移,通常的做法是从波形中减去直流偏移,并按其均方根振幅进行归一化。因此,相关函数的完整形式为:
\(C_{xy}[\tau] = \frac{\sum_t{(x[t] – \bar{x})(y[t+\tau]-\bar{y}_m) }}{\sqrt{\sum_t{(x[t]-\bar{x})^2}} \sqrt{\sum_t{(y[t+\tau]-\bar{y}_m)^2}} }\)
其中 \(\bar{x}\) 和 \(\bar{y}_m\) 分别是 \(x[t]\) 和 \(y[t+\tau]\) 在重叠窗口内的均值。这给出了一个归一化相关性,其值始终介于 -1 和 +1 之间,与振幅无关。
使用 Moku 示波器测量互相关
我们首先在 Moku 上演示互相关运算,方法是从示波器获取波形,并使用 Python 脚本手动计算其互相关值。使用 Moku:Delta,我们将 OutputA 连接到 InputA,OutputB 连接到 InputB。然后,我们启动示波器模式,并使用内置波形发生器输出两个相位略有不同的匹配正弦波,如下图 1 所示。

现在我们改用 Python。我们通过配置示波器设置并采集波形来自动化测量过程。有关 Moku Python API 的信息,请参阅相关文档。每条波形包含 8192 个点,由 `set_timebase` 命令控制。为了验证脚本是否按预期采集了数据,我们将结果绘制在图 2 中。

接下来,我们通过创建一个函数来计算互相关图,该函数将每个向量按 N 个点进行切片,然后将剩余的数据相乘。根据上述 \(C_{xy}\) 的公式进行适当的归一化,我们得到如图 3 所示的图。

互相关图随延迟时间在 +1(完全相关)到 -1(完全反相关)之间振荡。延迟时间为零时,由于源信号正交,互相关值为 0;施加不同的相位偏移会使互相关图的值向左或向右移动。然而,只要输入信号是周期性的,互相关图就会保持周期性。该振荡周期约为 312 个采样点,这意味着将通道 B 上的信号移动 312 个采样点将由于信号的周期性而导致相同的互相关值。312 个采样点的具体数值取决于示波器的采样率和采集阵列的大小。
利用时间序列数据计算互谱
计算出时间序列数据的互相关后,我们可以使用相同的示波器配置来计算频域中的相关性。在频域中,该量通常称为互谱,有时也称为互功率谱密度,它提供了相关性在频域中分布的信息。首先,我们通过傅里叶变换将离散时间序列数据集 \(x[t]\) 和 \(y[t]\) 转换到频域。我们将这些量分别记为 \(X[f]\) 和 \(Y[f]\)。为了测量两个信号之间的相位关系,我们取 \(Y[f]\) 的复共轭,然后除以数据点数 N 进行归一化。这样我们就得到了一个单位为电压平方的量,从而可以将其与原始信号的功率谱进行比较,同时保留相位信息。互谱的方程如下:
\(S_{AB}(f) = \frac{X[f] \times Y^*[f]}{N^2}\)
请注意,上述量通常为复数。为了将其与其他频谱数据一起显示在 Moku 频谱分析仪中,我们取其幅值并将其转换为对数刻度,假设阻抗为 50 欧姆,并使用以下公式:
\(P_{dBm} = 10 \log_{10} \left( 0.001 \times \frac{|S_{AB}|}{50 \Omega}\right)\)
这样做会造成显示量中相位信息的丢失;然而,相位信息仍然保留在完整的复值表达式\(S_{AB}(f)\)中。正如下一节所述,这仍然是去除噪声和量化时间敏感信号的有效工具。
使用 Moku 频谱分析仪进行互相关分析
接下来,我们将通过一个简单的演示来测试使用 Moku:Pro 和 Moku:Delta 的互相关功能。对于互相关计算,我们使用 Moku:Delta 的频谱分析仪,并将其设置为单仪器模式,同时使用 Moku:Pro 生成信号。在 Moku:Pro 的多仪器模式下,我们将波形发生器放置在插槽 1,示波器放置在插槽 2,如图 4 所示。这样,我们可以同时在时域监测波形发生器的输出,而 Delta 则可以同时监测频域信号。

打开波形发生器,我们生成两个频率为 50 MHz、相位差为 90° 的正弦波。同步相位后,切换到示波器观察时域信号。如图 5 所示,两个信号的幅度匹配,但存在相位差。

现在我们切换到频谱分析仪,在20 MHz的频域范围内观察信号,如图6所示。由于两个信号源自同一信号源,因此它们看起来很相似——都具有相同的杂散和其他数字生成信号的特征。启用数学通道和互相关功能后,我们可以看到噪声基底总体上有所降低,但主信号和杂散仍然保留。这与我们对互相关的理解一致,即不相关的特征被抑制,而每个信号的共同成分则被保留。

正如我们在上一节中确定的那样,该特征取计算出的互谱的幅度,并舍弃相位信息,这意味着两个信号之间 90° 的相位差不会被反映出来。
为了展示互相关如何确定两个信号的时间相似性,我们回到波形发生器,生成两个频率范围为 50 MHz 至 100 MHz 的啁啾脉冲。配置如图 7 所示。两个信号均从 50 MHz 开始,并在 5 ms 的时间内同步扫描。

观察 Moku 频谱分析仪的输出,我们发现两个信号在频域中均呈现平台状,在 50 MHz 以下和 100 MHz 以上均出现急剧下降。两次扫描结果几乎完全相同,在图中完美重叠,而计算得到的互相关结果表明,这两个信号在时间上也存在重叠。

我们通过反转其中一个线性调频信号的方向来展示互相关的实用性,在保持通道同步的前提下,在相同的时间段内将频率从 100 MHz 扫频至 50 MHz。在频域中,由于傅里叶变换不考虑扫频方向,因此结果看起来完全相同。如图 9 所示,输入 A 和 B 与之前的情况相同,在频谱分析仪屏幕上重叠。然而,互相关反映了这种变化,因为它取决于每个信号的瞬时频率。互相关曲线之前是一个平台,现在下降了约 30 dB,峰值仅出现在 75 MHz 附近。这是两个扫频信号相交的点,它们在频率上短暂重叠,然后继续沿相反方向扫描。

尽管频谱分析仪在频域工作,但添加互相关后可以有效地恢复其对时域特性的敏感性。仅凭幅度谱无法区分的信号,一旦考虑其时间重叠,即可清晰地区分。
结语
互相关提供了一种强大的方法来比较两个信号的相似性,剔除不相关的噪声,并高精度地提取时间或相位关系。
在本应用笔记中,我们首先给出了互相关的积分定义,并探讨了其物理意义。然后,我们研究了互功率谱密度,它是互相关的频域对应物。最后,我们使用 Moku 示波器和频谱分析仪演示了这些概念在实际测量中的应用。这些工具共同展示了互相关技术如何在各种应用中提高测量精度。