为什么有这么多计算 PSD 的方法?

信息处理 频谱 功率谱密度
2021-12-19 20:55:02

Welch 的方法一直是我计算均匀采样时间序列的功率谱密度 (PSD) 的首选算法。我注意到还有许多其他计算 PSD 的方法。例如,在 Matlab 中我看到:

  • 使用 Burg 方法的 PSD
  • PSD使用协方差法
  • 使用周期图的 PSD
  • 使用修正协方差法的 PSD
  • 使用多锥度法 (MTM) 的 PSD
  • 使用 Welch 方法的 PSD
  • 使用 Yule-Walker AR 方法的 PSD
  • 使用短时傅里叶变换的频谱图
  • 频谱估计

这些不同方法的优点是什么?作为一个实际问题,我什么时候想使用 Welch 方法以外的方法?

2个回答

我不熟悉 Multitaper 方法。就是说,你问了很多问题。为了攻读 MSEE 学位,我参加了涵盖 PSD 估计的整个课程。该课程涵盖了您列出的所有内容(Multitaper 方法除外)以及子空间方法。即便如此,也只涵盖了一些主要思想,并且有许多方法源于这些概念。

首先,有两种主要的功率谱密度估计方法:非参数和参数。

当提前对信号知之甚少时,使用非参数方法。它们通常比参数模型具有更少的计算复杂性。该组中的方法进一步分为两类:周期图和相关图。周期图有时也称为直接方法,因为它们导致数据的直接转换。其中包括样本光谱、Bartlett 方法、Welch 方法和 Daniell 周期图。相关图有时被称为间接方法,因为它们利用了 Wiener-Khinchin 定理。因此,这些方法基于对自相关序列的某种估计进行傅里叶变换。由于与高阶滞后相关的大量方差(由于相关性中使用了少量数据样本),使用窗口。Blackman-Tukey 方法概括了相关图方法。

参数方法通常在计算功率谱密度估计之前假设某种信号模型。因此,假设提前知道信号的一些知识。有两种主要的参数方法类别:自回归方法和子空间方法。

自回归方法假设信号可以建模为由白噪声序列驱动的自回归滤波器(例如 IIR 滤波器)的输出。因此,所有这些方法都试图求解 IIR 系数,从而很容易计算得到的功率谱密度。但是,必须确定模型顺序(或抽头数)。如果模型阶数太小,频谱将被高度平滑,并且缺乏分辨率。如果模型阶数太高,就会出现来自大量极点的假峰。如果信号可以通过模型'p'的AR过程来建模,那么由信号驱动的>=p阶滤波器的输出将产生白噪声。模型顺序选择有数百个指标。请注意,这些方法非常适用于中高 SNR、窄带信号。前者是因为模型在显着噪声中崩溃,并且更好地建模为 ARMA 过程。后者是由于所得模型的傅里叶变换中极点所得频谱的脉冲性质。AR 方法基于线性预测,这是用于将信号外推到已知值之外的方法。因此,它们不会受到旁瓣的影响,也不需要开窗。

子空间方法将信号分解为信号子空间和噪声子空间。利用两个子空间之间的正交性,可以在窄带分量出现大峰的地方形成伪谱。这些方法在低 SNR 环境中运行良好,但计算成本非常高。它们可以分为两类:噪声子空间方法和信号子空间方法。

这两个类别都可以通过以下两种方式之一使用:自相关矩阵的特征值分解或数据矩阵的奇异值分解。

噪声子空间方法试图求解一个或多个噪声子空间特征向量。然后,噪声子空间和信号子空间之间的正交性在所得频谱估计的分母中产生零,从而在真实信号分量处产生大值或尖峰。离散正弦曲线的数量或信号子空间的秩必须提前确定/估计或已知。

信号子空间方法试图在频谱估计之前丢弃噪声子空间,从而提高 SNR。仅使用确定属于信号子空间的特征向量形成降阶自相关矩阵(再次,模型阶问题),并且在任何其他方法中使用降阶矩阵。

现在,我将尝试快速涵盖您的列表:

  • 使用 Burg 方法的 PSD:Burg 方法利用 Levinson 递归与 Yule-Walker 方法略有不同,因为它通过最小化前向和后向线性预测误差的平均值来估计反射系数。这导致前向和后向线性预测误差的偏相关系数的调和平均值。与所有自回归方法一样,它会产生非常高分辨率的估计,因为它使用线性预测来推断其已知数据记录之外的信号。这有效地消除了所有旁瓣现象。对于短数据记录,它优于 YW 方法,并且还消除了使用有偏和无偏自相关估计之间的权衡,因为权重因子分开。一个缺点是它可以表现出谱线分裂。此外,它遇到所有 AR 方法都存在的相同问题。也就是说,低到中等的 SNR 会严重降低性能,因为它不再由 AR 过程正确建模,而是由 ARMA 过程。ARMA 方法很少使用,因为它们通常会导致关于移动平均参数的非线性方程组。

  • 使用协方差法的 PSD:协方差法是最小二乘法的一种特殊情况,其中线性预测误差的加窗部分被丢弃。这比 Burg 方法具有优越的性能,但与 YW 方法不同,要求解的矩阵逆不是一般的 Hermitian Toeplitz,而是两个 Toeplitz 矩阵的乘积。因此,Levinson 递归不能用于求解系数。另外,这种方法生成的滤波器也不能保证稳定。然而,对于频谱估计,这是一件好事,导致正弦含量的峰值非常大。

  • PSD 使用周期图:这是最差的估计量之一,是 Welch 方法的一个特例,具有单段、矩形或三角形窗口(取决于使用的自相关估计,有偏或无偏),并且没有重叠。然而,它是计算上“最便宜”的之一。由此产生的方差可能非常高。

  • PSD 使用改进的协方差方法:这改进了协方差方法和 Burg 方法。可以将其与 Burg 方法进行比较,其中 Burg 方法仅最小化关于反射系数的平均前向/后向线性预测误差,MC 方法将其最小化关于所有 AR 系数。此外,它不受谱线分裂的影响,并且比之前列出的方法提供的失真要小得多。此外,虽然它不能保证稳定的 IIR 滤波器,但它的格滤波器实现是稳定的。它也比其他两种方法对计算的要求更高。

  • 使用 Welch 方法的 PSD:Welch 方法通过解决真正的 PSD 公式中缺少整体平均的问题来改进周期图。它通过使用重叠和开窗来推广 Barlett 的方法,为伪集合平均值提供更多的 PSD“样本”。根据应用,它可能是一种便宜、有效的方法。但是,如果您遇到正弦波间距很近的情况,AR 方法可能更适合。但是,它不需要像 AR 方法那样估计模型阶数,因此如果您对先验光谱知之甚少,这可能是一个很好的起点。

  • PSD 使用 Yule-Walker AR 方法:这是使用完整误差残差的最小二乘法的一种特殊情况。与协方差方法相比,这会导致性能下降,但可以使用 Levinson 递归有效地解决。它也被称为自相关方法。

  • 使用短时傅里叶变换的频谱图:现在您正在进入另一个领域。这用于时变光谱。也就是说,其频谱随时间变化。这打开了另一个完整的蠕虫罐,并且有与您列出的时间频率分析一样多的方法。这当然是最便宜的,这就是它如此频繁使用的原因。

  • 光谱估计:这不是一种方法,而是您帖子其余部分的总称。有时,周期图被称为“样本光谱”或“舒斯特周期图”,前者可能就是您所指的。

如果您有兴趣,您还可以研究子空间方法,例如 MUSIC 和 Pisarenko Harmonic Decomposition。这些将信号分解为信号和噪声子空间,并利用噪声子空间和信号子空间特征向量之间的正交性来产生伪谱。与 AR 方法非常相似,您可能无法获得“真实”的 PSD 估计,因为该功率很可能不是守恒的,并且频谱分量之间的幅度是相对的。但是,这完全取决于您的应用程序。

干杯

我想添加到第一篇文章没有涵盖的唯一类别。多锥度法是一种用于计算功率谱的非参数方法,类似于周期图法。在这种方法中,通过对数据进行窗口化并计算傅里叶变换来计算功率谱,获取结果的大小并对其进行平方。多锥度方法平均预定数量的周期图,每个周期图用不同的窗口计算。此方法有效,因为所选窗口具有两个数学属性。首先,窗口是正交的。这意味着每个周期图都是不相关的,因此平均多个周期图给出的估计值比仅使用一个锥度低。其次,对于固定信号长度,窗口在频域中具有最佳可能集中度。

在matlab中,可以使用函数dpss来调用窗口函数。除了使用最佳窗口之外,还推导出了一种算法来根据不同周期图将添加到功率谱估计中的泄漏量来对它们进行加权。该算法产生一组数据自适应权重。使用一组数据自适应权重获得频谱估计可以在 Matlab 中通过创建一个带有“自适应”作为组合选项的频谱.mtm 对象来完成。

关于非参数方法,MT 方法可以说是估计平稳时间序列的功率谱的最佳方法。