求几个小波去噪的Matlab代码,急!!!!!!!!!!!

2024-11-27 11:37:57
推荐回答(2个)
回答1:

s %自己定义
%画出原始信号
subplot(221);
plot(s);
title('原始信号');
ylabel('幅值A');
%用db3小波对信号进行3层分解并提取系数
[c,l]=wavedec(s,3,'db3');
a3=appcoef(c,l,'db3',3);
d3=detcoef(c,l,3);
d2=detcoef(c,l,2);
d1=detcoef(c,l,1);
%强制消噪处理
dd3=zeros(1,length(d3));
dd2=zeros(1,length(d2));
dd1=zeros(1,length(d1));
c1=[a3 dd3 dd2 dd1];
s1=waverec(c1,l,'db3');
subplot(222);
plot(s1);
title('强制消噪信号');
%默认阈值进行消噪
%用ddencmp函数获得信号的默认阈值
[thr,sorh,keepapp]=ddencmp('den','wv',s);
s2=wdencmp('gbl',c,l,'db3',3,thr,sorh,keepapp);
subplot(223);
plot(s2);
title('默认阈值消噪');
xlabel('样本序号n');
ylabel('幅值A');
%用给定的软阈值进行消噪
softd1=wthresh(d1,'s',1.465);
softd2=wthresh(d2,'s',1.823);
softd3=wthresh(d3,'s',2.768);
c2=[a3 softd3 softd2 softd1];
s3=waverec(c2,l,'db3');
subplot(224);
plot(s3);
title('给定软阈值消噪');

回答2:

好像可我还将为本次上半场第一