离散小波变换;如何解释近似系数和细节系数?

信息处理 小波 转变 时频
2022-01-09 06:59:19

我想了解小波变换。到目前为止,我已经了解了它的基本理论。但是我无法理解如何解释这两个系数。

我正在使用 python 的 PyWavelets 包,我有一个 1 年的时间序列数据,平均分为 15 分钟的时间间隔。我每天都在尝试获取高频分量。傅里叶变换给出了关于高频的信息。但我也想获得时间信息,即在一天中的哪个部分出现尖峰(高频)。如果有人可以帮我弄清楚这一点以及如何绘制时间频率。我搜索了很多,但找不到完美的答案。我不是不尝试就寻找免费的解决方案;这是我尝试过的一切

tdayde=d2012_2['Date'].iloc[0]
endde=d2012_2['Date'].iloc[-1]
skiphr=datetime.timedelta(hours=24)
blockde=tdayde+skiphr 

我有附加到数据的时间戳,所以要为我使用的每一天绘制

healtharrayde=d2012_2
healtharrayde=healtharrayde[(healtharrayde['Date'] >= tdayde) & (healtharrayde['Date'] < blockde)]
sig=list(healtharrayde['MCP'])
  cA, cD = pywt.dwt(sig, 'db2')
    plt.plot(cD)
    plt.plot(cA)

因此,如果数组中有 96 个值,则 cD 和 cA 都是 48 个值。我想了解和绘制关于时间的 cD(细节组件),那么我应该怎么做?因为有 96 个时间戳(MCP 是值的列名)

对不起,如果这是一个愚蠢的问题,但我真的需要帮助。谢谢

1个回答

由于各种表示、命名法和输出格式,小波变换在面值上可能比 FFT 更难解释。我必须研究超过 15 种资源才能很好地了解其多样性以及 Pywavelets 使用的资源(在其文档中没有提供太多理论或解释)。

为了掌握 cD 和 cA 系数的含义,运行一个基本的小波变换计算示例是有帮助的。是多级 DWT 中发生的事情的简单逐步计算(您的示例基本上是第一级)。在这种表示中,它们并排连接 cA 和 cD 系数。

当使用特定的基函数运行 DWT 时,信号通过(内积)高通滤波器(差分滤波器)和低通滤波器(平滑/平均滤波器),每个滤波器都是小波基函数独有的。

对于“db2”,高通/低通滤波各有两个项,步长(步长)为 2,因此,在滤波完成后,您还可以对原始信号进行 2 次下采样。实际长度取决于滤波器长度和信号扩展模式。高通滤波结果为您提供 cD 系数。低通滤波结果为您提供 cA 系数。

在您的示例中,48 cD 和 48 cA 系数中的每一个都对应于原始 96 个数据点中的 2 个。因此,要及时绘制 cA 和 cD 系数,只需将时间分辨率降低 2。

希望这能回答您的问题,如果没有,这里有更多资源:

  • 有一些简单的方程和与 FFT 的直观比较

  • 有一些很好的图形表示和颜色编码来解释多级 DWT

  • 另一个带有详细解释和插图的指南