引言

互相关是信号处理中一种有用的技术,其本质是比较两个信号的相似性。该技术可以消除信号间不相关的(随机)噪声,从而降低整体噪声基底,使其适用于精确的相位噪声分析。此外,它还可用于时间上的信号匹配,因为当两个信号重叠时会产生幅度最大值。这在雷达测量中确定距离或飞行时间,或将输入信号与已知模板进行比较等应用中具有重要价值。

在本应用笔记中,我们介绍了互相关的积分形式并探讨了其物理意义。然后,我们将该表达式离散化,并讨论其在信号处理应用中的用途。最后,我们提出了互功率谱密度的概念,它是频域中互相关的等效表达式。我们使用 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 所示。

图 1. Moku 示波器设置。波形发生器产生两个正弦波,并将其输入到 Moku:Delta 的示波器。

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

图2. 使用Python脚本采集的Moku示波器数据。两个信号相位一致,相差90度。

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

图 3. 图 2 中两个示波器轨迹的互相关计算。

互相关图随延迟时间在 +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 则可以同时监测频域信号。

图 4. 多仪器并行模式演示。

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

图 5. Moku 示波器上显示的两个正弦波,它们之间存在相位偏移。

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

图 6. Moku 频谱分析仪计算输入 A 和 B 之间的互相关 (X-Corr),并将它们绘制在同一轴上。

正如我们在上一节中确定的那样,该特征取计算出的互谱的幅度,并舍弃相位信息,这意味着两个信号之间 90° 的相位差不会被反映出来。

为了展示互相关如何确定两个信号的时间相似性,我们回到波形发生器,生成两个频率范围为 50 MHz 至 100 MHz 的啁啾脉冲。配置如图 7 所示。两个信号均从 50 MHz 开始,并在 5 ms 的时间内同步扫描。

图 7. Moku 波形生成器在输出 A 和 B 上产生两个线性调频波形,这两个波形同步地从 50 MHz 扫描到 100 MHz。

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

图 8. Moku 频谱分析仪显示了输出 A 和 B 上的两个线性调频波形,其扫描范围从 50 MHz 到 100 MHz。两个波形看起来完全相同且相互重叠,两者之间存在很强的互相关性。

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

图 9. 两个信号沿相反方向扫描的互相关,说明了频谱分析仪量化两个信号在时间上匹配程度的能力。

尽管频谱分析仪在频域工作,但添加互相关后可以有效地恢复其对时域特性的敏感性。仅凭幅度谱无法区分的信号,一旦考虑其时间重叠,即可清晰地区分。

结语

互相关提供了一种强大的方法来比较两个信号的相似性,剔除不相关的噪声,并高精度地提取时间或相位关系。

在本应用笔记中,我们首先给出了互相关的积分定义,并探讨了其物理意义。然后,我们研究了互功率谱密度,它是互相关的频域对应物。最后,我们使用 Moku 示波器和频谱分析仪演示了这些概念在实际测量中的应用。这些工具共同展示了互相关技术如何在各种应用中提高测量精度。

下载应用说明

在演示模式下试用 Moku

您可以下载适用于 macOS 和 Windows 的 Moku: 应用程序 开始.


获取常见问题的答案

在我们的网站上查找有关设备和仪器的问题和答案 知识库.


与 Moku 用户联系

即刻加入 用户论坛 请求新功能、分享支持提示并与我们的全球用户社区联系。

其他推荐的应用笔记

返回所有应用笔记