兰华 李兰
摘 要:主要论述了小波分析中的快速算法——Mallat算法和单子带重构算法。对Mallat分解起点的实用性、滤波器的滤波方法做了更加通俗的说明,并比较了Mallat算法与单子带重构算法的分析差别,论述了它们在各自实际工程中的应用场合。
关键词:小波分析;Mallat算法;单子带重构算法;滤波器
中图分类号:TH123 文献标识码:A DOI:10.15913/j.cnki.kjycx.2015.24.017
如果利用某种仪器测量信号,那么,鉴于精度(分别率)的限制,得到的信号只能是实际信号的一个近似表示,即可将f(t)看作属于某个空间Vj。如果信号f(t)中有噪声,例如某个尖峰信号,要想把信号滤掉(一般的噪声频率比有用信号的频率高),就需要把f(t)中属于Vj但不属于更低一层空间Vj+1的部分去掉(滤波),这时就产生了小波的概念,即将信号映射到Vj+1上。
小波分析属于时频分析的一种,它具有多分辨分析(MRA—Multiresolution Analysis)的特点,而且在时域和频域都具有表征信号局部特征的能力,所以,被誉为“信号分析中的显微镜”。
多分辨分析为深刻理解小波原理和小波构造提供了一个极好的框架。由多分辨分析理论发展出了小波分解和重构的快速算法,它是法国学者Mallat最先提出来的,所以,被称为“Mallat算法”。该算法能极大地减少小波变换的计算量,将小波理论与工程应用联系起来,使其走向更广阔的应用领域。
1 Mallat算法分解起点分析
将具有某种性质元素的集合或具有某种性质的元素组成的一个类称为空间。如果空间为V0=W1⊕V1=W1⊕W2⊕V2=W1⊕W2⊕…⊕WJ⊕VJ,那么,设f(t)为向量,f(t)∈V0空间,则f(t)=D1f(t)+D2f(t)+…+DJf(t)+AJf(t),f(t)在V0空间的投影系数C0=A0f,f(t)在Vj空间的投影系数Cj=Ajf.
采用Mallat算法分解V0空间的f(t),则有低频分解概貌
部分Ajf= H(2t-k)Aj-1f,高频分解细节部分Djf= H(2t-k)
Aj-1f.Mallat分解算法如图1所示。
Mallat算法是分解系数的快速算法,很多人在使用Mallat算法时,都不太清楚其分析起点的真正意义,只是把采集到的f(t)数据直接输入滤波器中分解,但并不知道为什么可以这样做。
事实上,其分析起点是这样来的:设φ0,k(t)为空间V0的尺度基函数,由图1可知,Mallat算法分解的起点应该是系数C0,k=〈f(t),φ0,k(t)〉=〈f(t),φ(t-k)〉.不过,当采样间隔足够小时,φ(t-k)相当于δ(t-k)的表现,所以,当尺度为0时,可取C0,k≈f[n].因此,在实际应用中,通常都是将连续信号f(t)在满足香农定理时的数字采样得到的序列f[n]作为C0,k的近似表示,即直接取为C0,k=f[n].
由此可知,分解的起点变成了f[n],这样分解和重构都变成了针对f[n]的运算。这样,便可以利用离散小波变换的方法直接分析需要研究的序列f[n],从而将它分解到不同的尺度中去,并观察它的特征。
2 Mallat算法中的滤波器
采用Mallat算法多级分解每一级,实际上是分解出一部分高频细节部分Djf,剩余的低频概貌部分Ajf再传递给下一级进行类似的分解。不同级之间分解得到的高频细节之间是正交的,所以,它们也是不相关的。这种分解操作就像实际生活中的“剥洋葱”,每剥去一层“洋葱皮”,就剥掉了洋葱的一点“细节”,剥去一层皮后的洋葱与未剥之前的洋葱相比,整体形状相似,只是大小不同,因此,可以说前者是后者的概貌部分,这便是“低频概貌”和“高频细节”的形象比喻。分解的层数越少,j越小,Ajf包含的细节成分就越多,信号就越清楚,分辨率就越高;反之j越大,包含的细节就越少,只有信号的轮廓,信号就越模糊,分辨率就越低。
在Mallat算法中,信号的频段是由向小波滤波器被连续降半划分到指定的尺度(层)上的。
其滤波器的工作方式通俗的解释为:因为卷积和内积都满足交换结合律,所以,在Mallat算法中,系数Cj=〈f(t),φi,m(t)〉通过低频滤波器分解一层相当于空间Vj尺度基函数φi,m(t)先与滤波器卷积变为φi+1,m(t),然后f(t)与Vj+!上的尺度基函数φi+1,m(t)内积,这样分解结果就变成了f(t)在更低一层尺度空间Vj+!上的投影系数Cj+1.同理,Cj通过高频滤波器分解,结果相当于f(t)在更低一层细节空间Wj+!上的投影系数dj+1不断分解Cj.滤波器这样不断地工作便实现了Mallat分解。
3 Mallat算法与单子带重构算法的比较
如图2所示,单子带重构算法是参考文献[7]中首先提出来,它认为,由于Mallat算法中隔点采样会使得频率折叠,而在单子带重构算法中,子带和具有与初始系数相同的尺度可以避免频率折叠的问题发生,所以,分解信号的表达会更为准确。
单子带重构是建立在Mallat算法之上的,它的思路是先将信号按照Mallat分解算法分解,得到各尺度上的小波系数,然后将各子带上的小波系数分别重构至与原信号相同的尺度。
在尺度空间Vj中,被称为尺度因子的j与空间分辨率有直接的对应关系——j越小,包含的细节成分就越多,分辨率就越高;相反,j越大,包含的细节成分就越少,而且只有信号的轮廓,保留下来的低频概貌部分就越平滑,逼近的效果就越差,信号就越模糊。因此,当利用Mallat算法分析信号时,分解的尺度越大,越能看到信号的轮廓而看不到细节的东西,而单子带重构算法却不是这样的。
举一个简单例子直观地分析两者的差别。假设用Mallat算法分解一个包含频率为5 Hz、35 Hz、75 Hz和含有150 Hz瞬态响应的4个频率的信号f(t),则f(t)=sin(10πt)+sin(70πt)+sin(150πt)+10e-30t sin(300πt).
在400 Hz的采样频率上取800个点,选db1小波利用Mallat算法(调用Matlab小波工具箱相关函数进行分析)将信号f(t)分解为3层,如图3所示。
由图3可知,利用Mallat算法分解信号,分解的层数越多,尺度越大,信号越模糊,就只能看到信号的轮廓而没有细节部分。此外,由于每分解一层分辨率降低一定的比例,表述子带的时域长度也会以同等比例缩小。这就像用比例尺来描述两点之间的实际距离一样,假设两点间的距离为10 km,如果比例尺中的1 cm表示1 km,那么,需要用10 cm来表示这两点之间的距离;如果比例尺中的1 cm表示2 km,需要用5 cm表示这两点的距离。但是,这样做,表示的精度就会降低。
应用Mallat算法分解信号时,只能从其子带中看到信号的轮廓,即低频概貌。如果要精确地分析各个子带,比如想分析信号具体突变点的位置等,就需要使用单子带重构算法。如果使用单子带重构算法分析信号f(t),其结果如图4所示。
由图4可知,各个子带与原信号有相同的时域长度,这是因为子带信号的分辨率与原信号相同,即子带与原信号有相同
的尺度。这样,采用单子带重构算法分析的各个子带就相当于分别分析原始信号在不同频段上的投影分量(每分解一层,子带信号带宽缩小1倍)。因此,单子带重构算法分解的各个子带可以表示原信号在各个频段上的投影,以便于分析原信号的特征(比如突变点的位置等)。在单子带重构算法中,子带信号的突变点和极值点与原始信号f(tI)有对应关系,所以,不仅可以利用它检测微弱瞬态成分,还可以精确地确定其发生的时间点。
单子带重构算法将各个子带重构到了与原始信号相同的尺度,这对研究子带有非常重要的意义。事实上,Matlab小波工具箱“wavemenu”所使用的分析算法就是单子带重构算法。
4 结论
Mallat算法具有很大的实用价值,主要用于观察信号的概貌、信号压缩和信号去噪。信号压缩即利用数据量较少的小波系数去记录大量的原始信号;信号去噪主要就是利用Mallat算法分解信号,通过设定阈值对各尺度上的小波系数作除噪处理,之后通过Mallat算法重构信号达到去噪的目的。由文中的分析、对比情况可知,如果要具体地分析原始信号的特征,比如信号特征的提取、故障诊断等,就需要使用单子带重构算法,一方面,它可以解决Mallat算法带来的频率折叠问题;另一方面,子带回归到了原始信号的尺度,便于分析原信号在各个频段的特征。
参考文献
[1]邸继征.小波分析原理[M].北京:科学出版社,2010.
[2]胡友强.数据驱动的多元统计故障诊断及应用[D].重庆:重庆大学,2010.
[3]董振兴.交流驱动系统无传感器矢量控制及故障诊断研究[D].上海:上海交通大学,2001.
[4]刘涛,曾祥利,曾军.实用小波分析入门[M].北京:国防工业出版社,2006.
[5]刘颖.在役管线腐蚀故障图像识别方法研究[D].沈阳:东北大学,2008.
[6]邵克勇,蔡苗苗,李鑫.基于小波分析及奇异值差分谱理论的滚动轴承故障诊断[J].制造业自动化,2013(08).
[7]杨建国.小波分析及其工程应用[M].北京:机械工业出版社,2005.
〔编辑:白洁〕