这个问题的确不太好理解,我也是在这困惑了很长时间,和大家一起讨论讨论:
1. 几乎所有的中文小波书中都说它重构的是一维信号的系数,MATLAB的帮助中也是这样的说法;
2. 如果如上所说是正确的,那么就有这样的问题:
wrcoef是和wavedec相互对应的(一分解一重构),而函数wavedec做分解时得到的系数在不同的层(尺度)是不一样的,每增加一尺度,系数个数减半,重构的如果是系数,那么在不同尺度上得到的系数的个数应该和分解时对应,但事实并非如此;(详见下面的例子)
3. 从例中发现,用该函数重构的系数(姑且还按帮助中的说法)在各层上都是和原信号等长度的,进一步验证,用这些所谓的系数叠加得到的结果恰恰和原信号相同(误差极小);
由此可以说明,该函数所重构的应该是信号,即原信号在该尺度(频段)上所对应的“分”信号。
load sumsin; s = sumsin;
[c,l] = wavedec(s,3,'db4');
[cd1,cd2,cd3] =detcoef(c,l,[1,2,3]);%得到三个尺度的细节系数
ca3=appcoef(c,l,'db4',3); %第3层的近似系数
ca3_n=size(ca3) %求出细节系数与近似系数的个数
cd3_n=size(cd3)
cd2_n=size(cd2)
cd1_n=size(cd1)
a3=wrcoef('a',c,l,'db4',3); %重构各层上的信号
d3=wrcoef('d',c,l,'db4',3);d2=wrcoef('d',c,l,'db4',2);d1=wrcoef('d',c,l,'db4',1);
d1_n=size(d1)
d2_n=size(d2)
s1=a3+d3+d2+d1; % 由各层信号得到的重构信号
err=norm(s1-s)
运行结果:
ca3_n =
1 131
cd3_n =
1 131
cd2_n =
1 255
cd1_n =
1 503
d1_n =
1 1000
d2_n =
1 1000
err =
6.9960e-011 |