解析matlab函数wrcoef的内部实现

启发:http://blog.sina.com.cn/s/blog_8ec096580101fsmn.html
一、首先,分析一个简单的例子,即对长度为2000的信号进行db6小波1层分解。
即:[C,L] = wavedec(s,1,'db6');A1 = wrcoef('a',C,L,'db6',1);
下面对函数wrcoef的实现过程进行详细解读:
第一步:将数组C中的CA1取出来,进行补零;
CA1 = C(1:L(1));
ca1 = zeros(1,2*L(1));
ca1(2:2:2*L(1)) = CA1(:); 
第二步:将CA1通过低通滤波器LO_R;
A11 = conv(LO_R,ca1);
第三步:得到1层分解后重构的概貌系数A1;
A1 = A11(12:2000+12-1);
注明:至于这里为什么要从第12个数据开始取,暂时不清楚。
从上面的分析来看,将分解最底层的概貌系数通过补零和滤波器的方式,直到得到和原始信号长度相同的数据。
二、分析3层分解的具体重构情况。Matlab语句:[C,L] = wavedec(s,3,'db6');
该句的作用是将信号s采用db6小波基进行3层分解,C里面中存放着小波变换后的各个分量的系数,L也是个数组,记录着C中每个元素的长度。
C = [CA3 CD3 CD2 CD1];L=[la3 ld3 ld2 ld1 N];(这里 L=
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页