2015年09月24日

clc 
close all

t=0:0.05:20;
x=3*sin(0.2*pi*t);%原始正弦信号
ns=0.2*sin(9*pi*t);
%N=length(t)
%ns=[zeros(1,100),0.2*randn(1,200),zeros(1,101)];%区间为101-201的白噪声
%ns=zeros(1,401);
sig=x+ns;%叠加了噪声的信号
figure(1)
subplot(311)
plot(x);
title('原始信号')
subplot(312)
plot(ns);
title('噪声')
subplot(313)
plot(sig);
title('有噪信号')

[c,l]=wavedec(sig,4,'db4');%对有噪信号用db4小波函数进行4层分解

a1=appcoef(c,l,'db4',1);%提取第一层的近似分量
d1=detcoef(c,l,1);%提取第一层的细节分量
a2=appcoef(c,l,'db4',2);%提取第二层的近似分量
d2=detcoef(c,l,2);%提取第二层的细节分量
a3=appcoef(c,l,'db4',3);%提取第三层的近似分量
d3=detcoef(c,l,3);%提取第三层的细节分量
a4=appcoef(c,l,'db4',4);%提取第四层的近似分量
d4=detcoef(c,l,4);%提取第四层的细节分量

%画出每一层的近似分量和细节分量,共四层
figure(2)
subplot(421)
plot(a1)
title('第一层的近似分量')
subplot(422)
plot(d1)
title('第一层的细节分量')
subplot(423)
plot(a2)
title('第二层的近似分量')
subplot(424)
plot(d2)
title('第二层的细节分量')
subplot(425)
plot(a3)
title('第三层的近似分量')
subplot(426)
plot(d3)
title('第三层的细节分量')
subplot(427)
plot(a4)
title('第四层的近似分量')
subplot(428)
plot(d4)
title('第四层的细节分量')

%进行重构

dd1=zeros(size(d1));%将第一层的细节分量置零
dd2=zeros(size(d2));%将第二层的细节分量置零
dd3=zeros(size(d3));%将第三层的细节分量置零
dd4=zeros(size(d4));%将第四层的细节分量置零

c1=[a4 dd4 dd3 dd2 dd1];%重构小波分解向量,所有的细节分量变为零
aa1=waverec(c1,l,'db4');%重构信号
figure(3)
plot(aa1)
title('一到四层的细节分量置零后的重构信号')

c2=[a4 d4 dd3 dd2 dd1];%重构小波分解向量,其中第一、三、四层的细节分量被置零
aa2=waverec(c2,l,'db4');%重构信号
figure(4)
plot(aa2)
title('一到三层的细节分量置零后的重构信号')

c3=[a4 d4 dd3 d2 dd1];%重构小波分解向量,其中第一、三层的细节分量被置零
aa3=waverec(c3,l,'db4');%重构信号
figure(5)
plot(aa3)
title('一、三层的细节分量置零后的重构信号')

c4=[a4 d4 d3 d2 dd1];%重构小波分解向量,其中第一的层细节分量被置零
aa4=waverec(c4,l,'db4');%重构信号
figure(6)
plot(aa4)
title('第一层的细节分量置零后的重构信号')

c5=[a4 d4 d3 dd2 d1];%重构小波分解向量,其中第二的层细节分量被置零
aa5=waverec(c5,l,'db4');%重构信号
figure(7)
plot(aa5)
title('第二层的细节分量置零后的重构信号')

原文地址:https://www.cnblogs.com/gisalameda/p/12840559.html