主要内容

小波包:分解细节

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

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

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

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

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

下图显示了1-D输入信号的DWT树。

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

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

由图可见,该DWT的后续级别仅在低通(缩放)滤波器的输出进行操作。在每个级别,DWT将信号划分为Octave带。在批判性的DWT中,带通滤波器的输出在每个级别下都是两个。在未定义的离散小波变换中,输出不会下采样。

将DWT树与全小波包树进行比较。

图2:全小波包树下降到3级。

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

[ N F S. 2 j + 1 N + 1 F S. 2 j + 1 N = 0. 1 ...... 2 j - 1 其中fs是采样频率。

这种带通近似值的良好取决于滤波器的频率如何定位。对于Fejér-Korovkin过滤器喜欢'fk18'(18个系数),近似相当好。对于像Haar ('哈尔'),近似不准确。

在批判式上采样的小波包变换中,带通滤波器的输出将由两个缩小采样。在未传定的小波包变换中,输出不会下采样。

用小波包的时频分析

因为小波包将频率轴除以比DWT的更精细的间隔,所以小波包在时频分析中优越。例如,考虑具有150和200 Hz的两个间歇性正弦波,在加性噪声中。数据以1 kHz采样。为了防止时间分辨率的危重采样小波包变换固有的损失,使用抽样转换。

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('赫兹')标题('时频分析 - 未定义的小波包变换'

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

注意,小波包变换能够分离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地震数据的轴包含类型线的对象。

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

wptreedecimated = dwpt(科比,'等级'3,'边界''定期');wptundecimated = modwpt(神户,3);

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

decimatedEnergy = sum(cell2mat(cellfun(@(x) sum(abs(x).²)),wptreeDecimated,'统一输出',错误的)))
decimatedEnergy = 2.0189 e + 11
Undecimatedenergy = sum(sum(abs(wptundecimated)。^ 2,2))
Undecimatedenergy = 2.0189e + 11
signalEnergy =规范(科比,2)^ 2
signalEnergy = 2.0189 e + 11

DWT与小波包变换共享这一重要属性。

wt = modwt(科比,'fk18',3);Undecimatedwtenergy = sum(sum(abs(wt)。^ 2,2))
Undecimatedwtenergy = 2.0189e + 11

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

小波包分类 - 地震或爆炸?

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

绘制来自每个组的时间序列进行比较。

加载地震xplosiondata.子图(2,1,1)绘图(地震explosiondata(:,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');

RE包含8个子带中的每一个中的相对能量。如果您将所有元素括在RE中,则等于1.注意,这是数据的显着减少。长度2048的时间序列减少到具有8个元素的向量,每个元素表示在3级的小波包节点中的相对能量。辅助功能Helperearearthquakeexplosionclassifier使用级别3的16个录制中的每一个的相对能量'fk6'小波。这导致16×8矩阵,并使用这些特征向量作为输入到kmeans分类器的输入。分类器使用间隙统计标准来确定1和6之间的特征向量的最佳数量,并对每个向量进行分类。另外,分类器对使用的3级的未发送小波变换系数执行完全相同的分类'fk6'每个时间序列的小波和功率谱。未传定的小波变换导致16×4矩阵(3个小波子带和1个缩放子带)。功率谱产生16×1025矩阵。源代码Helperearearthquakeexplosionclassifier列在附录中。要运行分类器,必须有统计学和机器学习工具箱™和信号处理工具箱™。

水平= 3;[WavPacketCluster, WtCluster PspecCluster] =......helperEarthQuakeExplosionClassifier (EarthQuakeExplosionData级别)
WavPacketCluster =带有物业的GapEvaluation:NumObservations:16检测结果:[1 2 3 4 5 6]标准值:[-0.0039 0.0779 0.1314 0.0862 0.0296 -0.0096] Optimalk:2
WTCLUSTER =具有属性的GAPEVALUATUATION:NUMOBSERECATIONS:16检测结果:[1 2 3 4 5 6]标准值:[-0.0095 0.0474 0.0706 0.0260 -0.0280 -0.0346] Optimalk:1
pspeccluster = GapEvaluation具有属性:NumObServations:16检验:[11/2 3 4 5 6]标准值:[0.3804 0.3574 0.3466 0.2879 0.3256 0.3326 0.3256 0.3326] Optimalk:1

WavPacketCluster是未发送的小波包功能向量的聚类输出。wtcluster.是使用未发送的DWT功能向量的聚类输出,以及pspeccluster.是基于功率谱的群集的输出。小波包分类已识别两个群集(优化术:2)作为最佳数字。检查小波包聚类的结果。

res = [wavpacketcluster.optimaly(1:8)';Wavpacketcluster.optimaly(9:结束)']
res =2×81 2 2 2 2 2 2 2 2 11 1 1 1 1 1 1 2

你看到只做了两个错误。在八个地震录音中,七个被分类在一起(第2组),一个被错误地归类为属于第1组。对于8爆炸记录相同,7分属于分类,1个被分类,1个被错误分类。基于第三级未定义的DWT和功率谱的分类将一个集群作为最佳解决方案返回。

如果你重复上面的水平等于4,非抽取小波变换和小波包变换执行相同。两者都将两个聚类定义为最优,都将第一个和最后一个时间序列错误地归为另一个组。

结论

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

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

附录

Helperearearthquakeexplosionclassifier

函数[WavPacketCluster,WTCluster,PSPeccluster] = HelperearearthquakeExplosionClassifier(数据,级别)%此功能仅提供支持特色示例金宝app%waveletpacketsdemo.mlx。%此功能可以在将来的释放中更改或删除。%数据 - 具有单个时间序列的数据矩阵作为列向量。%级别 - 小波包和小波变换的级别np = 2 ^级别;nw = level + 1;wpmatrix =零(16,np);wtmatrix =零(16,nw);为了JJ = 1:8 [〜,〜,〜,〜,RE] = MODWPT(数据(:,JJ),级别,'fk6');wt = modwt(数据(:,jj)水平,'fk6');WTMATRIX(JJ,:) = SUM(ABS(WT)。^ 2,2)./常规(数据(:,jj),2)^ 2;WPMATRIX(JJ,:) = RE;结尾为了kk = 9:16 [〜,〜,〜,〜,ref] = modwpt(数据(:,kk),级别,'fk6');wt = modwt(数据(:,kk),级别,'fk6');wtmatrix(kk,:) = sum(abs(wt)。^ 2,2)./ norm(数据(:,kk),2)^ 2;wpmatrix(kk,:) = re;结尾可重复性的%RNG('默认');WavPacketCluster = Evallusters(WPMatrix,'kmeans''差距''klist',1:6,......'距离''城市街区');wtcluster = semblusters(wtmatrix,'kmeans''差距''klist',1:6,......'距离''城市街区');pxx =期间图(数据,汉敏(numel(data(:,1))),[],1,'力量');PspecCluster = evalclusters (Pxx ','kmeans''差距''klist',1:6,......'距离''城市街区');结尾

参考

[1] Wickerhauser, Mladen Victor。从理论到软件的自适应小波分析。Wellesley,MA:A.K.彼得斯,1994年。

[2] Percival,Donald B.和Andrew T. Walden。时间序列分析的小波方法。剑桥系列统计和概率数学。剑桥;纽约:剑桥大学出版社,2000年。

Shumway, Robert H.和David S. Stoffer。时间序列分析及其应用:用r示例。3 ed。Springer统计中的文本。纽约:2011年Springer,2011年。

[4] Stoffer,D. H.“Asta:应用统计时间序列分析”。R包版本1.3。https://CRAN.R-project.org/package=astsa, 2014年。

也可以看看

|||