一维信号小波去噪算法C语言,[转载]一维小波分解与去噪重构

对随机一维信号实现多尺度小波分解,长度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('软阈值去噪重构信号');

a4c26d1e5885305701be709a3d33442f.pnga4c26d1e5885305701be709a3d33442f.png

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值