主要内容

小波包:分解细节

此示例显示了小波包与离散小波变换(DWT)的区别。该示例显示了小波包变换如何实现信号的等宽子带滤波,而不是DWT中较粗的倍频程滤波。

这使得小波包在许多应用中成为DWT的一个有吸引力的替代方法。这里给出的两个例子是时频分析和信号分类。您必须有统计学和机器学习工具箱™和信号处理工具箱™来执行分类。

如果在小波包变换中使用正交小波,最后会在等宽子带中对信号能量进行分割。

该示例侧重于一维情况,但许多概念直接扩展到图像的小波包变换。

离散小波和离散小波包变换

下图显示了一维输入信号的DWT树。

图1:DWT树向下1级,为1 D输入信号。

G ( F ) 是缩放(低通)分析滤波器和 H ( F ) 表示小波(高通)分析滤波器。底部的标签显示频率轴[0,1/2]划分为子带。

该图显示DWT的后续电平仅在低通(缩放)输出上运行滤波器。在每一级,DWT将信号分为倍频带。在临界采样DWT中,带通滤波器的输出在每一级下采样两次。在非抽样离散小波变换中,输出不下采样。

比较DWT树和完整的小波包树。

图2:完整的小波包树下降到第3级。

在小波包变换中,也对小波系数或细节系数进行滤波操作。结果是,小波包为输入信号提供了一种子带滤波,逐步细化等宽区间。在每一个层面上, J ,频率轴[0,1/2]分为 2. J 部分波段。以赫兹为单位的子频带 J 大约

[ N F s 2. J + 1. , ( N + 1. ) F s 2. J + 1. ) N = 0 , 1. , 2. J - 1. 哪里 财政司司长 是采样频率。

这种带通近似的好坏取决于滤波器的频率局部化程度。对于Fejér-Korovkin过滤器,如“fk18”(18个系数),近似相当好。对于像Haar (“哈尔”),近似不准确。

在临界采样小波包变换中,带通滤波器的输出由两个降采样。在非降采样小波包变换中,输出不降采样。

小波包时频分析

由于小波包将频率轴划分成比DWT更精细的间隔,小波包在时频分析中具有优越性,作为一个例子,在加性噪声中考虑两个频率为150和200 Hz的间歇性正弦波,在1 kHz处采样数据,以防止临界SAMP中固有的时间分辨率的丢失。led小波包变换,采用非抽样变换。

dt=0.001;t=0:dt:1-dt;x=...cos(2 * pi * 150 * t)。*(t> = 0.2&t <0.4)+ sin(2 * pi * 200 * t)。*(t> 0.6&t <0.9);y = x + 0.05 * randn(尺寸(t));[wpt,〜,f] = modwpt(x,'timealign',真正的);轮廓(t、f * (1 / dt), abs (wpt)。^ 2)网格包含(‘时间(秒)’)ylabel('赫兹')标题('时频分析 - 未定义的小波包变换')

图中包含一个axes对象。标题为“时频分析-未抽取小波包变换”的axes对象包含一个contour类型的对象。

请注意,小波包变换能够分离150和200 Hz分量。对于DWT而言,情况并非如此,因为150和200 Hz属于同一倍频带。四级DWT的倍频带为(以Hz为单位)

  • [0,31.25)

  • [31.25, 62.5)

  • [62.5,125)

  • [125,250)

  • (250500)

证明这两个分量是DWT时间局部化的,但在频率上没有分离。

mra=modwtmra(modwt(y,“fk18”,4),“fk18”);j = 5:-1:1;freq = 1/2 *(1000./2.^J);轮廓(t,freq,flipud(abs(mra)。^ 2))网格ylim([0 500])xlabel(‘时间(秒)’)ylabel('赫兹')标题(“时频分析——非抽样小波变换”)

图中包含一个轴对象。以时频分析—非抽取小波变换为标题的轴对象包含一个轮廓型对象。

当然,连续小波变换(CWT)提供了比小波包变换更高的时频分析分辨率,但是小波包具有作为正交变换的额外优势(当使用正交小波时)。正交变换意味着信号中的能量被保留下来,并在下一节演示的系数之间进行分割。

小波包变换中的能量保存

小波包变换除了在每一层将信号过滤成等宽的子带外,还将信号的能量在子带之间进行分割。这对于抽取小波包变换和未抽取小波包变换都是正确的。要演示这一点,请加载包含地震记录的数据集。这个数据类似于下面信号分类示例中使用的时间序列。

负载科比绘图(神户)网格包含(“秒”)标题(“神户地震数据”)轴心

图中包含一个轴对象。标题为“Kobe地震数据”的axes对象包含一个line类型的对象。

获取数据的抽取和未抽取小波包变换,直到第3级。为保证抽取小波包变换结果的一致性,将边界扩展模式设为“周期性”

wptreeDecimated=dwpt(神户、,“水平”3,“边界”,“周期性”); wptUndecimated=modwpt(神户,3);

计算被抽取和未抽取小波包三级系数中的总能量,并与原始信号中的能量进行比较。

decimatedEnergy = sum(cell2mat(cellfun(@(x) sum(abs(x).²)),wptreeDecimated,“UniformOutput”,false)))
decimatedEnergy = 2.0189 e + 11
未抽取能量=总和(总和(绝对绝对值(wptUndecimated)。^2,2))
未升华能=2.0189e+11
signalEnergy =规范(科比,2)^ 2
signalEnergy = 2.0189 e + 11

DWT与小波包变换具有这一重要特性。

wt=modwt(神户、,“fk18”,3);未抽样数据能量=总和(总和(绝对重量)^2,2))
未抽样数据能量=2.0189e+11

由于每一层的小波包变换将频率轴分成等宽的区间,并将信号能量在这些区间中进行分割,因此通常只需保留每个小波包中的相对能量,就可以构造有用的特征向量进行分类。下一个示例演示了这一点。

小波包分类——地震还是爆炸?

地震记录从许多来源捕捉到活动。能够根据活动的起源对其进行分类是很重要的。例如,地震和爆炸可能呈现相似的时域特征,但区分这两个事件是非常重要的。数据集地震xplosiondata.包含具有2048个样品的16条记录。前8个录音(柱)是地震的地震记录,最后8次录音(专栏)是爆炸的地震记录。加载数据并绘制地震和爆炸记录以进行比较。数据从R包Astsa Stoffer取出[4],它补充了Shumway和Stoffer[3].作者好心地允许在这个例子中使用它。

绘制每组的时间序列以进行比较。

负载地震xplosiondata.子地块(2,1,1)图(EarthQuakeExplosionData(:,3))xlabel(“时间”)标题(“地震记录”)网格子图(2,1,2)绘图(地震explosiondata(:,9))xlabel(“时间”)标题(“爆炸记录”)网格

图中包含2个轴对象。标题为地震记录的轴对象1包含line类型的对象。标题为爆炸记录的轴对象2包含line类型的对象。

将每个时间序列分解到第三级,形成小波包特征向量“fk6”具有非抽样小波包变换的小波。这将产生8个子带,宽度约为1/16个循环/样本。使用每个子带中的相对能量创建特征向量。作为示例,获得第一次地震记录的小波包相对能量特征向量。

[WPT,〜,F,E,Re] = Modwpt(地震explosiondata(:,1),3,“fk6”);

重新包含8个子带中每个子带的相对能量。如果将重新,等于1。请注意,这是数据的显著减少。长度为2048的时间序列减少为一个包含8个元素的向量,每个元素表示3级小波包节点中的相对能量。辅助函数helperEarthQuakeExplosionClassifier使用“fk6”小波。这将产生一个16×8的矩阵,并使用这些特征向量作为kmeans分类器的输入。分类器使用间隙统计准则来确定1到6之间的特征向量的最佳聚类数,并对每个向量进行分类。此外,分类器对使用该方法获得的第3级未抽取小波变换系数执行完全相同的分类“fk6”每个时间序列的小波和功率谱。非抽样小波变换产生16×4矩阵(3个小波子带和1个缩放子带)。功率谱形成16×1025矩阵。的源代码helperEarthQuakeExplosionClassifier列在附录中。要运行分类器,必须有统计学和机器学习工具箱™和信号处理工具箱™。

水平= 3;[WavPacketCluster, WtCluster PspecCluster] =...Helperearearthquakeexplosionclassifier(地震explosiondata,水平)
WavPacketCluster=GapEvaluation with properties:NumObservations:16检查k:[1 2 3 4 5 6]标准值:[-0.0039 0.0779 0.1314 0.0862 0.0296-0.0096]最佳值:2
WtCluster=GapEvaluation with properties:NumObservations:16检查K:[1 2 3 4 5 6]标准值:[-0.0095 0.0474 0.0706 0.0260-0.0280-0.0346]最佳值:2
PspecCluster = GapEvaluation with properties: NumObservations: 16 InspectedK: [1 2 34 56] CriterionValues: [0.3804 0.3574 0.3466 0.2879 0.3256 0.3326] OptimalK: 1

WavPacketCluster是未抽取小波包特征向量的聚类输出。WT集群是使用未抽取DWT特征向量的聚类输出,以及pspeccluster.是基于功率谱的聚类的输出。小波包分类识别了两个聚类(K:2)作为最优数,检验小波包聚类的结果。

res=[WavPacketCluster.Optimality(1:8)';WavPacketCluster.Optimality(9:end)']
res=2×8.1 2 2 2 2 2 2 2 1 1 1 1 1 1 1 2

你可以看到,只有两个错误被发现。在八次地震记录中,有七次被归为一类(第二组)一个被错误地归类为第1组。8个爆炸记录也是如此——7个被归类在一起,1个被错误归类。基于三级未抽样DWT和功率谱的分类返回一个簇作为最佳解决方案。

如果重复上述等于4的级别,则未传定的小波变换和小波包变换相同。两者都识别两个集群,以及将第一个和最后一次序列分类为属于另一组的群集。

结论

在这个例子中,您学习了小波包变换与离散小波变换的区别。具体来说,小波包树还过滤小波(细节)系数,而小波变换只迭代缩放(近似)系数。

您了解到,小波包变换分享DWT的重要节能,同时提供卓越的频率分辨率。在一些应用中,这种卓越的频率分辨率使小波包变换了DWT的有吸引力的替代方案。

附录

helperEarthQuakeExplosionClassifier

函数[WavPacketCluster,WtCluster,pspecluster]=帮助器EarthQuakeExplosionClassifier(数据,级别)%此函数仅用于支持特征示例金宝app%waveletpacketsdemo.mlx。%此功能可能在将来的版本中更改或删除。%数据 - 具有单个时间序列的数据矩阵作为列向量。%级别-小波包和小波变换的级别NP=2^级;NW=标高+1;WpMatrix=0(16,NP);WtMatrix=零(16,NW);对于JJ = 1:8 [〜,〜,〜,〜,RE] = MODWPT(数据(:,JJ),级别,“fk6”);wt = modwt(数据(:,jj)水平,“fk6”); WtMatrix(jj,:)=sum(abs(wt)。^2,2)。/norm(Data(:,jj),2)^2;WpMatrix(jj,:)=RE;终止对于kk=9:16[,,,,,,,RE]=modwpt(数据(:,kk),电平,“fk6”);wt=modwt(数据(:,kk),电平,“fk6”)矩阵(kk,:)=sum(abs(wt)。^2,2)。/norm(Data(:,kk),2)^2;矩阵(kk,:)=RE;终止%重复性RNG('默认');WavPacketCluster = Evallusters(WPMatrix,'kmeans',“差距”,'klist',1:6,...'距离',“城市街区”);WtCluster=评估聚类(wt矩阵,'kmeans',“差距”,'klist',1:6,...'距离',“城市街区”); Pxx=周期图(数据,汉明(numel)(数据(:,1)),[],1,“权力”);PspecCluster = evalclusters (Pxx ','kmeans',“差距”,'klist',1:6,...'距离',“城市街区”);终止

参考

[1] Wickerhauser, Mladen Victor。从理论到软件的适应小波分析马萨诸塞州韦尔斯利:A.K.彼得斯,1994年。

[2] 珀西瓦尔、唐纳德B.和安德鲁T.沃尔登。时间序列分析的小波方法剑桥统计和概率数学系列。剑桥 ; 纽约:剑桥大学出版社,2000年。

Shumway, Robert H.和David S. Stoffer。时间序列分析及其应用:以R为例第三版,《统计学中的斯普林格文本》。纽约:斯普林格,2011年。

[4] asta:应用统计时间序列分析〉,R软件包1.3版。https://CRAN.R-project.org/package=astsa, 2014年。

另见

|||