对小波函数wenergy(C,L) 的计算方法的分析
通过Matlab 自带的小波函数[C,L] = wavedec(X,N,'name');可以目标分析数据
进行小波分解。并通过函数X = wrcoef('type',C,L,'wname',N)对小波低频数据a 和
高频数据d 进行重构。以下对该命令的计算逻辑进行简要分析:
主要结论:
该公式可以理解为计算低频信号a 能量和各高频信号d ,d ,…d 信号的能
n 1 2 n
量与总能量的比值。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
设向量a=[2 4 5 8 6 7 8 9 1 5 8 7];
1. 对该向量采用db1 小波1 层分解,得到
a1=[ 3 3 6.5 6.5 6.5 6.5 8.5 8.5 3 3 7.5 7.5]
d 1= [-1 1 -1.5 1.5 -0.5 0.5 -0.5 0.5 -2 2 0.5 -0.5]
(1)手动计算能量
∑12 2
a1 能量= (对a1 中所有数据求平方和)=462
=1
∑12 2
d 1 能量= (对d1 中所有数据求平方和)=16
=1
a1 能量占比= a1 能量/( a1 能量+ d 1 能量)= 97.7901%
d1 能量占比= a1 能量/( a1 能量+ d 1 能量)= 2.2099%
(2 )通过命令计算能量
而直接通过命令[Ea,Ed] = wenergy(c,l)计算得到 a1, d1 能量占比为
97.7901%,2.2099%
两种方法计算结果相等。
相关命令如下:
clear all;
a=[2 4 5 8 6 7 8 9 1 5 8 7];
[c,l] = wavedec(a,1,'db1');
a1=wrcoef('a',c,l,'db1',1);
d 1=wrcoef('d',c,l,'db1',1);
[Ea,Ed] = wenergy(c,l)
2. 对该向量采用db1 小波2 层分解,得到
a2=[ 4.75 4.75 4.75 4.75 7.5 7.5 7.5 7.5 5.25 5.25 5.25 5.25]
d1= [-1 1 -1.5 1.5 -0.5 0.5 -0.5 0.5 -2 2 0.5 -0.5]
d2=[ -1.75 -1.75 1.75 1.75 -1 -1 1 1 -2.25 -2.25 2.25 2.25]
(1)手动计算能量
∑12 2
a2 能量= (对a2 中所有数据求平方和)=425.5
=1
∑12 2
d 1 能量= (对d1 中所有数据求平方和)=16
=1
∑12 2
d2 能量= (对d2 中所有数据求平方和)=36.5
=1
a2 能量占比= a2 能量/( a2 能量+ d 1 能量+d2 能量)= 89.0167%
d1 能量占比= d 1 能量/( a2 能量+ d 1 能量+d2 能量)= 3.3473%
d2 能量占比= d2 能量/( a2 能量+ d 1 能量+d2 能量)= 7.6360%
(2 )通过命令计算能量
而直接通过命令[Ea,Ed] = wenergy(c,l)计算得到 a1, d1, d2 能量占比为