小波分解和重构算法作业

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

小波的分解和重构

小波分析第二次作业

在实际操作中,一般我们是应用matlab在计算机上处理小波变换。信号总是离散的。一般包括单层分解重构,多层分解重构等方法。下面探讨一维离散小波变换在matlab中的应用。

1.单层小波分解

%读入信号

load leleccum;

s=leleccum(1:4000);

%通过db4小波基进行离散小波变换

[cA1,cD1]=dwt(s,'db4');

figure(1), subplot(311);

plot(s)

title('Original signal');

subplot(323); plot(cA1);title('Approx.coef.for db4');

subplot(324); plot(cD1);title('Detail coef.for db4');

上图我们可以看到经过db4小波一层分解之后的高频信息和低频信息。

2.单尺度一维小波的重构

%用小波函数db4进行信号重构

ss=idwt(cA1,cD1,'db4');

err=norm(s-ss);

figure(2),plot(ss);

重构完成后的误差为3.53e-10。

重构完成后的函数与分解前的函数相同,仅仅存在很小很小可以忽略为0的误差。

3.多层小波分解

上文是使用单层小波分解,下面使用wavedec函数进行多层小波分解,并显示分解后的低频高频信息。

%通过db4小波基进行三尺度小波分解

[c,l]=wavedec(s,3,'db4');

a1=appcoef(c,l,'db4',1);%提取尺度1的低频系数

a2=appcoef(c,l,'db4',2);%提取尺度2的低频系数

a3=appcoef(c,l,'db4',3);%提取尺度3的低频系数

figure(3);

subplot(321);plot(a1);title('尺度1的低频系数');

subplot(323);plot(a2);title('尺度2的低频系数');

subplot(325):plot(a3):title('尺度3的低频系数');

d1=detcoef(c,l,1);

d2=detcoef(c,l,2);

d3=detcoef(c,l,3);

figure(3);subplot(322);plot(d1);title('尺度1的高频系数');

figure(3);subplot(324);plot(d2);title('尺度2的高频系数');

figure(3);subplot(326);plot(d2);title('尺度3的高频系数');

由上图可以清晰的看出低频的信息和高频的信息。

4.多层小波重构

(1)重构原信号

上文中,使用wavedec函数对小波进行了db4,三尺度分解,现在,使用waverec将原信号重构,(包括低频和高频)。

c1=[a3,d3,d2,d1];

s1=waverec(c1,l,'db4');

figure(4);

plot(s1);

title('重构信号);

err2=norm(s-s1);

重构后误差为1.09E-09

(2)高频置零后重建

当然,如果认为高频信息是不需要的时候,我们可以将高频信息置零后重构低频信息。d3=zeros(1,length(d3));

d2=zeros(1,length(d2));

d1=zeros(1,length(d1));

c1=[a3,d3,d2,d1];

s1=waverec(c1,l,'db4');

figure(4);

subplot(211),plot(s);title('原始信号');

subplot(212),plot(s1);title('重构信号');

这样的话,将全部高频信息置零后重构,当然,也可以将其中一层,两层置零,取决于具体的应用。

总结:

通过分解重构算法的实践,对于我这个对matlab一点基础都没有的人来说,学习到很多。不仅仅是小波的算法,而是所有的操作的一种学习。这是一种很不错的学习经历。

主要参考文献:

孔玲军.MATLAB小波分析超级学习手册.北京.人民邮电出版社.2014.

相关文档
最新文档