一、傅里叶变换

(FT)

二、傅里叶变换(FT)的缺点与短时傅里叶变换(STFT)

三、短时傅里叶变换(STFT)的缺点与连续小波变换(CWT)

四、连续小波变换(CWT)的缺点与离散小波变换(DWT)

四、连续小波变换(CWT)的缺点与离散小波变换(DWT)

1、连续小波变换(CWT)的缺点

在上一篇文章(zhuanlan.zhihu.com/p/68)中我们讲解了 CWT可以实现动态解析度的时频分析。CWT公式为:CWT_x^psi (	au,s) = frac{1}{sqrt{s}} int_{-infty}^{+infty}x(t)psi(frac{t-	au}{s}) dtx(t) 表示原始信号。你可能已经注意到了,这里的 x(t) 是一个连续函数

但是在第二篇文章(zhuanlan.zhihu.com/p/66)中我们讲过,实际采样信号往往具有两个特点:1、离散性,就是采集数据不连续,很容易理解,采集信号肯定是一个一个数据采集的;2、有限性,虽然理想的CWT是从 (-infty,+infty) 进行积分的,但是实际信号往往实在一个区间内 (a,b) 的。如下图所示。

所以,由于CWT需要一个连续信号,但是实际采样信号往往是离散的,我们无法直接对实际信号进行CWT。

或许你想,我们对实际采样信号进行插值连续化不就可以使得其连续了吗?

是的。将实际采样信号插值连续化之后,我们——人,是可对它进行CWT的。

但是,我们也都知道,我们的帮手——计算机,是无法处理连续问题的。计算机只能处理离散问题。如果计算机要进行CWT,就意味著需要计算机做无穷次运算,计算机计算能力再强也是做不到的。

因此,为了使得计算机可以进行小波变换,我们需要引入离散小波变换(DWT)。

2、离散小波变换(DWT)的Wallet演算法

DWT有很多种实现方式,我们在这里介绍Wallet演算法,它是DWT的以一种经典的快速演算法,也比较易懂。

我们首先来回顾一下上一篇文章讲过的动态解析度图:高频部分,窄窗,高的时域解析度,低的频域解析度;低频部分,宽窗,低的时域解析度,高的频域解析度。

我们是利用小波母函数的挤压和拉伸来实现动态解析度的:

当小波母函数被挤压的时候,频率就高,此时窗子窄,时域解析度就好,根据海森堡测不准原理,频域解析度就差;

当小波母函数被拉伸的时候,频率就低,此时窗子宽,时域解析度就差,根据海森堡测不准原理,频域解析度就好。

也就是说,我们控制的是不同频率对应的窗长(即时域解析度),频率解析度是通过海森堡测不准原理得到的,从而达到了动态解析度

那么,如果我们这次不控制窗长(即时域解析度),转而控制频域解析度,能否达到动态解析度呢?

答案是可以,这就是Wallet演算法要解决的问题。

半子带滤波

我们知道,小波母函数本质上是一种带通滤波器。那么,假设可以通过小波母函数构造得到两个滤波器(至于怎么得到后续会介绍一下),包括一个高通滤波器和一个低通滤波器

假设信号中的最高频率为 Fs 。那么,高通滤波器的作用就是得到 (frac{Fs}{2},Fs) 的部分,低通滤波器的作用就是得到 (0,frac{Fs}{2}) 的部分。如下图所示:

我们将这个过程称为一次半子带滤波

下采样与上采样

我们定义一个N倍下采样过程:将采样点N倍稀释。如下,就是一个2倍下采样过程,将采样点稀释2倍,即:每2个点采样数据点,就去除一个点。

N倍上采样过程:将采样点数量增加N倍。一般通过补0,或者插值的方法实现上采样。

离散小波分解

我们将一次半子带滤波+一次2倍下采样称为一层小波分解。如下图所示,图中的「箭头+2」表示一次2倍下采样。

假设原采样信号有 N 个点,信号最高频率为 F_s (根据采样定律, F_s 为采样频率的一半)。

经过一次高通滤波后,得到了 (frac{Fs}{2},Fs) 的部分,也是 N 个点,再经过一次2倍下采样,变成了 frac{N}{2} 个点,我们将这frac{N}{2}个点称为小波分解的高频系数(为什么叫作系数会在后面解释)。

经过一次低通滤波后,得到了 (0,frac{Fs}{2}) 的部分,也是 N 个点,再经过一次2倍下采样,变成了 frac{N}{2} 个点,我们将这frac{N}{2}个点称为小波分解的低频系数

也就是说,经过一层小波分解的信号,它的总长度加起来,还是 N是不变的

现在,我们已经对 (0,Fs),N 个点的原信号进行了第一层小波分解,得到了(frac{Fs}{2},Fs),frac{N}{2} 个点的高频系数和(0,frac{Fs}{2}),frac{N}{2} 个点的低频系数。

那么,我们保持 (frac{Fs}{2},Fs),frac{N}{2} 个点的高频系数不变,把(0,frac{Fs}{2}),frac{N}{2} 个点的低频系数作为信号,再进行一次小波分解。于是可以得到 (frac{Fs}{4},frac{Fs}{2}),frac{N}{4} 个点的高频系数和 (0,frac{Fs}{4}),frac{N}{4} 个点的低频系数。

这个过程被称为第2层小波分解。我们验证一下,经过2层小波分解的信号,它的总长度加起来,还是N ,是不变的。

依此类推,我们可以进行第三层,第四层小波分解,如图所示,直到第 log_2N 层小波分解。在第 log_2N 层小波分解,由于不断的下采样,低频系数和高频系数都只剩1个数了,小波分解无法进行下去了。

因此,小波分解的原始信号个数一般也需要是2的幂次。不过,在各种数学计算软体里,如果输入不是2的幂次,它会自动帮你补零到2的幂次。

我们取4层小波分解的结果来看一下。

在频域上,我们得到的是 (frac{Fs}{2},Fs)(frac{Fs}{4},frac{Fs}{2})(frac{Fs}{8},frac{Fs}{4})(frac{Fs}{16},frac{Fs}{8})(0,frac{Fs}{16})频域区间的系数。

在时域上,由于不断的2倍下采样,不断地丢弃数据,所以最后一层分解得到的(frac{Fs}{16},frac{Fs}{8})(0,frac{Fs}{16})的时域解析度最差,第一层分解保留的(frac{Fs}{2},Fs) 时域解析度最好。

那么,我们得到的解析度就是这样子的:

这,不就是上一篇文章我们讲过的小波变换得到的动态解析度吗?

是的!这就是离散小波变换的快速演算法之一——Wallet演算法,通过不断的半子带滤波和下采样,控制不同频率成分的频域解析度,进而达到动态解析度。

最后,用一张比较经典的图,再来演示一下小波分解的过程。 pi 为采样信号的最高频率。 g(n) 代表高通滤波器, h(n) 代表低通滤波器,「箭头+2」表示2倍下采样。

图源:THE WAVELET TUTORIAL

再来举个例子形象地说明一下DWT的使用吧。

希望对于一个采样率为1000HZ的非稳态信号进行小波分解,下图为包含了256个采样点(即256ms)的原始采样信号。

1、首先,选择小波分解的层次。

可以根据对最低频率区间的要求来选择小波分解的层数。比如,我之前做项目的时候,采样率为1000HZ,那么信号的最高频率为 F_s = 500HZ 。我认为对于频率低于20HZ的成分,不需要再进一步区分了。因此,我选择5层小波分解,得到的最低一层的频率区间为 (0,F_S/2^5) ,即为 (0,16)HZ ,这就够用了。

2、接下来,进行5层小波分解,得到小波分解系数。

如下图中,图1依然是原始采样信号 ,图2到图6为第1层到第5层小波分解的高频系数,图7为第5层小波分解的低频系数。如图所示,这些小波分解系数对应著不同的频率区间。

这就是DWT了,又称为小波分解。

这里提一下,小波分解是可逆的,即可以通过不同频率区间的小波分解系数进行重构,得到不同频率区间的重构信号

3、所以,最后,进行小波重构,得到重构信号。

如下图中,图1依然是原始采样信号,图2到图7为通过不同频率区间的小波系数进行重构,得到的重构信号。将图2到图7加起来就可以得到重构原始信号,其和原始采样信号的误差称为重构误差。

3、Wallet演算法背后的数学原理简介

这一部分主要是为了解答上一部分中的两个问题。

1、在上一部分,我们「假设可以通过小波母函数构造得到两个滤波器」,那么,怎么得到刚好可以具有以上特性的滤波器呢?

2、在上一部分,我们将小波分解之后的结果称为「系数」,那么,为什么称为系数呢?

先说一下,这部分我不是弄得非常懂,毕竟我只是个做工程的本科生,不是做数学的大佬。我凭自己的理解写一写大概,并推荐了两篇个人觉得讲得很好的回答。

我们用Haar小波做例子。

首先,介绍一个Haar尺度函数(又称为父小波),记为 phi(x)phi(x) = 1* (0 leq x<1) ,如下图。

通过Haar尺度函数 phi(x) ,可以得到Haar母小波 psi(x)psi(x) = phi(2x) - phi(2x-1) ,如下图。

现在,对于一个 N 点的原始采样信号,如果我们可以用 N做了时域平移的Haar尺度函数和 N做了时域平移的Haar母小波,来逼近原信号,就可以得到用 N 个Haar尺度函数的系数和 N 个Haar母小波的系数。

从直观上看,Haar尺度函数只是一条线,而Haar母小波则是一个波。所以,Haar母小波所能表示出来的信息应该更加细致。因此,N 个Haar母小波组合起来,应该代表的是原始信号的细节部分,也就是高频部分;N 个Haar尺度函数组合起来,代表的是原始信号的粗略部分,也就是低频部分。

我们将N 个Haar母小波的系数称为高频系数,将N 个Haar尺度函数的系数称为低频系数。

所以,DWT的滤波功能,是通过利用尺度函数和母小波重构信号,获取重构系数来获得的,这已经定性地解决了本部分提出的问题。

关于DWT背后的数学原理,推荐两篇回答:

关右:通过Haar小波认识离散小波变换?

zhuanlan.zhihu.com
图标
Jainszhang:小波变换完美通俗讲解系列之 (二)?

zhuanlan.zhihu.com
图标

最后,由于DWT分解得到的是高频系数和低频系数,也就是用尺度函数以及母小波表示原信号的时候的一些重构系数,所以通过重构系数可以重构该信号,这被称为小波分解的重构。这也说明了小波分解是可逆的。

1335:从傅里叶变换进阶到小波变换(一)?

zhuanlan.zhihu.com
图标
1335:从傅里叶变换进阶到小波变换(二)?

zhuanlan.zhihu.com
图标
1335:从傅里叶变换进阶到小波变换(三)?

zhuanlan.zhihu.com
图标

feihu.eng.ua.edu/NSF_TU(参考资料)


推荐阅读:
相关文章