如何计算对数空间功率谱?
信息处理
自由度
2021-12-27 23:54:41
2个回答
我找到了一篇直接解决这个问题的论文:
- Michael Tröbs 和 Gerhard Heinzel,“从对数频率轴上的数字化时间序列改进频谱估计”,《 测量》 ,第39卷(2006 年),第 120-129 页。(或免费预印本。)
论文的前几张图很好地说明了该算法解决的问题,并且参考文献包含了其他方法的有用参考书目(恒定 Q 变换、回火傅里叶变换、调查文章等)。
他们的方法不是对现有的基于 FFT 的功率谱估计的输出进行重新组合,而是仅在感兴趣的(对数间隔的)频率上计算离散傅里叶变换。对于要估计的每个频率,它们基本上实现了 Welch 算法,但是为每个频率专门选择了一个变换长度(因此还有平均值的数量)。每个频率仓的计算使用整个时间序列,但分段不同。结果具有理想的特性,即分辨率(bin 宽度)是频率的平滑函数,并且可以将结果校准为功率谱密度或功率谱。
Matlab 实现在这里:https ://github.com/tobin/lpsd
披露:本文的作者与我在同一机构。
在这种情况下,我将使用最小二乘法来计算一些已知值列表的频率。最常见的方法是 Lomb 方法。它的工作原理与 FFT 或 DFT 非常相似,但它只会计算每个确定频率的频率,并且它可以处理丢失的数据,如果这是一个问题。思路如下:
- 确定频率列表() 在其上进行计算,它适合您希望采样的所需频带。
- 给定频率, 采样时间, 和值,求频率的幂如下:
请注意,这不会像 FFT 那样很好地扩展,因此只有在所需频率的数量远低于收集所有数据所需的 FFT 时,我才会这样做。
否则,可以对 FFT 或 DFT 进行插值方法或任何其他重新采样。