缺少数据点的时间序列的频谱分析

信息处理 离散信号 频谱 采样 自由度
2022-02-06 00:44:26

我使用 PC 记录一些物理属性的时间序列。问题是,由于某种原因,我没有记录整个时间序列,而是记录了第一个片段,然后是第二个、第三个等。每个片段是 500,000 个点,大约 30 分钟。但是,它们并不是严格连续的:在每个段和另一个段之间会有一个“滞后”或缺失点,等于几秒钟。

由于与每个段的样本总数相比,错过的点数太少,我可以简单地连接段并将它们视为单个时间序列吗?最后我会对做 FFT、直方图等感兴趣。

3个回答

给定其中的样本给出的索引集{x[n]}nMMx[n]

微不足道的解决方案(我正在寻找更快更有效的解决方案会很棒)将是:

argminy12F^Tyx22

其中F^与给定样本索引匹配的DFT 矩阵Fx是给定样本的向量,y是 x 的全部数据的估计 DFTx[n]

然后由伪逆(最小二乘解)给出解:

y=(F^F^T)1F^x

在实践中,矩阵的条件会非常差,因此必须使用 SVD 使用 LS 解决方案生成解决方案。

该代码可在我的StackExchange Codes Signal Processing Q17734 GitHub 存储库中找到(查看SignalProcessing\17734文件夹)。

代码结果:

在此处输入图像描述

备注:借用估计离散傅里叶变换/序列缺失样本的信号

频谱分析、FFT、小波要求序列具有相同的持续时间并且序列是连续的,因此不存在丢失的数据点。我建议用基于最后一个序列的最后几个实例的外推值填充空白,或者另一个解决方案是镜像基于反向传递值的最后几个实例缺失值,或者另一个解决方案是使用最后一个数据点并重复它来填补空白。

根据您尝试执行的操作,您可能根本没有问题。如果您只想检查 FFT 频谱幅度结果,那么只需对每个单独的时间样本块执行 FFT。您可能希望对多个 FFT 幅度结果序列进行平均以获得“平均 FFT 幅度”显示,该显示将具有降低的噪声方差。这通常很有用。

如果您正在实施某种二维、实时、频谱分析(“瀑布”显示),那么我建议您只需连接多个时间样本块,然后执行频谱分析以查看会发生什么。

顺便说一句,当你说 500,000 个样本时,你真的是指 2^19 = 524,288 个样本(2 的整数幂)吗?