为什么用 FFT 卷积实现 CWT?

信息处理 离散信号 自由度 卷积 小波 英担
2022-02-16 18:26:22

一些实现在频域中生成小波。

  1. 除了每个 FFT 卷积的速度,还有什么原因吗?
  2. 所有小波都将以相同的长度进行采样 - 100,000 个样本,即使对于那些具有 28 个时域支持的小波;为什么?
  3. 实现将左右填充,以便原始居中 - 而在 FFT 卷积中我们右填充。这仍然是卷积,还是“替代卷积”,为什么不右填充?
1个回答

答案是小波设计简而言之,频域采样提供了对某些所需滤波特性的精确控制,并且通常受到较少离散化误差的影响。

离散化误差:平滑度

统一抽样更容易误传哪个?

在此处输入图像描述

左边是高中心频率的 Morlet,右边是傅里叶变换。我们可以想象,左边的轻微错误步骤可能会严重歪曲波形。为了看到这一点,我们将中心频率推到 Nyquist 附近:

在此处输入图像描述

在采样位置有黑线。稍微改变一下姿势...

在此处输入图像描述

一个剧烈的变化。如果不仔细检查,我们不太可能发现采样位置的差异;所有改变的是endpoint=False -> True替代视角:

在此处输入图像描述

过滤器控制

分析性

一些应用需要严格的解析(负频率为零),而 Morlet 是伪解析的:它在接近 DC 或 Nyquist 时会泄漏到负数中。不存在严格解析 Morlet 小波的封闭形式时域表达式它是通过负数设置为零并取ifft.

稀疏、冗余

滤波器组的冗余由其频域波形的重叠控制:

在此处输入图像描述

左边是低冗余,右边是高。分类需要低冗余,时间定位需要高冗余。还有一个频域信息流的聚合指标,可以通知滤波器组校正 - Littlewood-Paley sum(请参阅此处的“能量分析”)。

在时域中没有这样的度量。

倒置

没有迹象表明 CWT 是否会在时域中直接可逆:我们要求滤波器平铺整个频率轴如果某些频率没有得到覆盖,它们就会完全丢失。

二次抽样

一个因子的非混叠二次采样要求没有高于采样率k的非零频率。0.5/k同样没有时域指示。

坏处

对于时域采样,最高频率的离散化误差最大 - 对于频域采样,情况正好相反:我们最终可能会用 1 个样本来描述整个小波,这是一个常见的陷阱(它是纯正弦)。较低的频率在时域中产生的效果更好;更多细节在这里

PyWavelets, Scipy

有设计不良的过滤器;如果我们将它们绘制在频域中,则 Nyquist 附近的带通会泄漏 DC 附近的频率,以及其他问题。我没有绘制它们,但这篇文章证明了这一点。

替代卷积?

这里没有这样的东西;这是循环卷积。我们通过确保“左不从右绘制”来保证与线性卷积的等价性,即小波的时间支持足够小(进一步讨论)。为了清楚起见,使用 boxcar 来表示时间支持:

在此处输入图像描述

左右填充的原因是编程方便;各种非零方案,如reflect,更容易实现。产生的卷积与右填充、左填充或任何其他任意移位完全相同——它是 DFT 循环性所固有的。

为什么都一样长?

程序化的便利和速度。然而,后者可以通过重叠相加卷积得到很大的改进——以前者为代价。另一个原因是具有相同的“参考框架”来设计频率平铺 - 但是可以在之后修剪小波,同时保留所述平铺。