小波变换之小波构建

小波变换之小波构建

本小节介绍如何构建小波,所谓构建小波,就是指如何扩展 (stretch )小波,不同点数的小波是如何产生的。有两种方法: 利用公式的原始小波以及利用插值的基小波

1. 公式构建小波 (crude wavelet)

在使用公式构建小波时,我们会面临一个问题,小波的点数如何增加 ?

传统的数字信号处理有两种方式:

  1. 点间距固定,沿用相同的公式,在尾部加点,时域总距离增加
  2. 点间距固定,但使用不同的公式,相当于插值

1.1 Adding More Points at the Ends for Better Filter Performance

举个例子,我们知道矩形窗低通滤波器对应的时域为 \(sinc (t) = \sin(t)/t\) ,下图展示了在双边尾部继续插入40个点的方式,显然,我们并没有改变间距,只是在尾部继续加值。

下图展示了各自对应的频率响应,(在 Matlab 中利用 FFT 变换可以获得)

显然尾部加点会减少 Gibbs 效应,同时截止频率没有改变(仍然在 0.25 Nyquist),但更加准确,也就是说过渡带 (transit band) 更窄

1.2 Adding More Points by Interpolation for Lower Cutoff Frequency

在小波变换中,我们都是利用插值获得更多点数小波,术语叫 stretching,或者 dilating。

仍然用 \(sinc(t)\) 函数为例,下图左边的主瓣有9个点(从 -2 到 +2),右边的主瓣有17个点(从 -4 到 +4)。两幅图的旁瓣个数相同,但右图每个旁瓣的点数更多

下图左图公式为 \(\cfrac {\sin(\pi/2 \ast x)} {\sqrt {2} (\pi/2 \ast x)}\) ,右图公式为 \(\cfrac {\sin(\pi/4 \ast x)} {2 (\pi/4 \ast x)}\) , 两图中点的间隔均为 0.5

说白了,我们将函数沿时间轴扩展(膨胀)了2倍,但取样间隔不变。

下面是两图的频响曲线,显然左图的截止频率为 0.25 Nyquist,而右图的截止频率为 0.125 Nyquist。

stretching the Sinc function by 2 divides the cutoff frequency by 2.

下面是我用 Matlab 绘制的图形,和上面的结果非常符合

下面是 m 文件的下载地址:

https://drive.google.com/open?id=13UysCIox3TZbsH81MY7K96hLb4veWESl

1.3 以 Morlet Wavelet 为例

Morlet 小波的数学公式如下: \[
\text {morl} (t) = \exp (-t^2/2) \ast \cos(5t)
\]
下面两张图显示了17,33,97和 193 点的 Morlet 小波,对应的尺度 scale = 1, 2, 6, 12。

下面我们可以看下 97点,193点的 Morlet 小波,尺度 scale = 6 和 12,都是带通滤波器。尺度越大,尖峰频率越小。这和我们在 DSP 中学习的 0值插值对应的频域收缩的道理是相同的。参考我写的这篇论文 数字信号处理之抽取和插值 (6)

或许有人会说,我们可以使用传统的 DSP 方法设计更尖锐的截止频率,更好的过渡带的带通滤波器,效果比 Morlet 小波更好。然而,小波滤波器的特点在于同时提供频率、时间信息,以及关于波形形状的信息。这是传统的滤波器做不到的。

2. 从基本长度滤波器扩展

先零插值 (也叫上采样 upsampling ),然后低通滤波器可以实现完美的插值

The original points are upsampled by a factor of 2, convolve the data with a lowpass filter, and use a constant of multiplication (常数相乘) later to normalize (adjust for the change of magnitude due to the extra points).

举个例子,如何扩展 Db4 小波滤波器:

Db4 wavelet function filter (本质是带通滤波器) 为: \([-0.1294 \quad -0.2241 \quad 0.8365 \quad -0.4830]\)

而 Db4 的 scaling function filter,其实就是上面的低通滤波器为: \([0.4830 \quad 0.8365 \quad 0.2241 \quad -0.1294]\)

我们先上采样然后低通滤波,可以获得 10 点 Db4 扩展小波:
\[
[-0.1294 \quad 0 \quad -0.2241 \quad 0 \quad 0.8365 \quad 0 \quad -0.4830] \rightarrow \\\\
[-0.0625 \quad -0.1082 \quad -0.1372 \quad -0.1707 \quad 0.3538 \\\\
\quad 0.7287 \quad -0.0458 \quad -0.5123 \quad -0.1082 \quad 0.0625]
\]
我们用这个方法,依次获得 22, 46, 94, 190, 382以及最终 766 点的扩展 Db4 小波

上图展示了 46点,190点和766点的Db4小波

上图中,我们将 766 点的 Db4 小波映射到 \([0, 3]\) 区间,这样做的原因是间断点所在的位置为 \(t=1.0, 1.5, 2.0\)\(2.5\), 正好是整数或者二分之一点。 记住我们没有得到连续的小波函数。

如果我们在 766 点小波函数中找到最开始的4个基础数 (魔数, magic number) 所在的位置为 \(2/6, 5/6, 8/6\) 以及 \(11/6\) ,或者说起点在 \(1/3\) ,终点在 \(11/6\) ,间隔为 \(1/2\) ,通常我们还会在尾部加上两个零值点,位置为 \(14/6\)\(17/6\) . 在数字信号处理中,我们通常也会在尾部进行补0操作。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d 博主赞过: