在计算机上实现连续小波变换时的时移应该是多少?

信息处理 小波
2022-02-08 13:03:54

我目前正在研究连续小波变换(CWT)的实现方法。在纸面上,CWT 在有限信号上产生无限多的输出,因为缩放和移位参数是连续的。

在为计算机应用程序离散化 CWT 时,通常会根据信号的带宽和每个八度音程的所需语音数量来限制缩放比例。

但是,我对如何限制时移感到困惑。由于我们对离散输入信号进行操作,因此从技术上讲,我们可以将每个小波时移 1 个样本以获得最高分辨率。然而,这对于低频卷积来说似乎是一种浪费。

似乎时移应该是比例的函数,这样高频的时移较小,低频的时移较大。

在计算机上实现算法时,通常如何确定 CWT 时移?

1个回答

对于某些信号来说确实很浪费,但不幸的是,除了之后的下采样之外,没有什么可做的。完全矩形的表示可以实现原本不可能的重建和分析操作 - 此外,与通过 FFT 卷积跳过 1 相比,每个样本执行 1 次移位可以更快并且占用更少的(计算)内存。

我在这里提供了一个带有视觉效果的幼稚实现,还与 Python 库实现进行了比较。此外,就在今天,我推出了一个ssqueezepy版本,它具有我所知道的最好的开源 CWT 实现(我还没有看到它是否能胜过 MATLAB)——可以检查它的代码

如果您坚持按尺度离散化,我只能建议采用试错法,因为结果会因使用的数据、小波和小波参数而异。然后,您可以通过复制相邻的时间轴值以获得更高的比例来绘制单个 2D 图像(但对于速度几乎没有或根本没有增加的努力和猜测)。