对随机一维信号实现多尺度小波分解,长度M=256,层数N=3.
解:一维随机信号是用nelec函数作为信号源,产生0~256范围内的信号。
实现小波按层分解的函数是: [C,L]=wavedec(s,N,’wname’)
,即使用给定小波‘wname’对一维信号s进行N层小波分解。
实现提取一维小波细节系数的函数是: D=detcoef(C,L,N),即由小波分解结构[C,L]提取N层细节系数。
提取一维近似系数的函数是: A=appcoef(C,L,’wname’,N),即使用小波分解框架[C,L]计算N层系数近似值。‘wname’是包含小波名的字符串,本题中选用’db1’小波。
实现一维小波重构的函数是: X=waverec(C,L,’wname’),即使用小波分解框架[C,L]重构一维小波信号,‘wname’是包含小波名的字符串,本题中选用’db1’小波
clc;
clear;
load LHAZ_height
load LHAZ_hsig
load LHAZ_time
ft=LHAZ_height';
t=LHAZ_time';
hsig=LHAZ_hsig';
num=length(t);
f=detrend(ft);
t0=min(t);
t1=max(t);
s=f;
wname='db1';%选用db3小波基
[c,l]=wavedec(s,3,wname);
figure(1);
subplot(421);plot(t,s); title('原始信号');
[cd1,cd2,cd3]=detcoef(c,l,[1 2 3]);
ca1=appcoef(c,l,wname,1);
ca2=appcoef(c,l,wname,2);
ca3=appcoef(c,l,wname,3);
subplot(423);plot(linspace(t0,t1,length(cd3)),cd3);title('第3层高频分解');Ylabel('cd3');
subplot(425);plot(linspace(t0,t1,length(cd2)),cd2);title('第2层高频分解');Ylabel('cd2');
subplot(427);plot(linspace(t0,t1,length(cd1)),cd1);title('第1层高频分解');Ylabel('cd1');
subplot(424);plot(linspace(t0,t1,length(ca3)),ca3);title('第3层低频分解');Ylabel('ca3');
subplot(426);plot(linspace(t0,t1,length(ca2)),ca2);title('第2层低频分解');Ylabel('ca2');
subplot(428);plot(linspace(t0,t1,length(ca1)),ca1);title('第1层低频分解');Ylabel('ca1');
X=waverec(c,l,wname);
subplot(422);plot(t,X);title('重构信号')
figure(2);
deda=mean(hsig);
thr=3*deda;
%进行硬阈值处理
ythard1=wthresh(cd1,'h',thr);
ythard2=wthresh(cd2,'h',thr);
ythard3=wthresh(cd3,'h',thr);
c1=[ca3 ythard3 ythard2 ythard1];
X1=waverec(c1,l,wname);
%进行软阈值处理
ytsoftd1=wthresh(cd1,'h',thr);
ytsoftd2=wthresh(cd2,'h',thr);
ytsoftd3=wthresh(cd3,'h',thr);
c2=[ca3 ytsoftd3 ytsoftd2 ytsoftd1];
X2=waverec(c2,l,wname);
subplot(311);plot(t,s); title('原始信号');
subplot(312);plot(t,X1);title('硬阈值去噪重构信号');
subplot(313);plot(t,X2);title('软阈值去噪重构信号');