小波语音降噪

用MATLAB对一语音信号进行小波分解,分别用强阈值,软阈值,默认阈植进行消噪处理。

复制内容到剪贴板

代码:

%装载采集的信号leleccum.mat

load leleccum;

%=============================

%将信号中第2000到第3450个采样点赋给s

indx=2000:3450;

s=leleccum(indx);

%=============================

%画出原始信号

subplot(2,2,1);

plot(s);

title('原始信号');

%=============================

%用db1小波对原始信号进行3层分解并提取系数

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

a3=appcoef(c,l,'db1',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,'db1');

subplot(2,2,2);

plot(s1);grid;

title('强制消噪后的信号');

%=============================

%用默认阈值对信号进行消噪处理并图示结果

  %用ddencmp函数获得信号的默认阈值

[thr,sorh,keepapp]=ddencmp('den','wv',s);

s2=wdencmp('gbl',c,l,'db1',3,thr,sorh,keepapp);

subplot(2,2,3);

plot(s2);grid;

title('默认阈值消噪后的信号');

%=============================

%用给定的软阈值进行消噪处理

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,'db1');

subplot(2,2,4);

plot(s3);grid;

title('给定软阈值消噪后的信号');

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值