MATLAB实现小波变换去噪

 最近在弄一个信号处理的比赛,主要用到了小波变换,先给出一个原始的小波变换的代码以供参考。

clear all;clc
load(‘Audio_1_resample.mat’);
s=data_resample; %获取要处理的信号,data_resample是在上面.mat里的一个参数
%整个信号的长度
N = numel(s);
%小波分解;
[c,l]=wavedec(s,7,’coif5’); %小波基为coif5,分解层数为7层
ca11=appcoef(c,l,’coif5’,7); %获取低频信号
cd1=detcoef(c,l,1);
cd2=detcoef(c,l,2); %获取高频细节
cd3=detcoef(c,l,3);
cd4=detcoef(c,l,4);
cd5=detcoef(c,l,5);
cd6=detcoef(c,l,6);
cd7=detcoef(c,l,7);
sd1=zeros(1,length(cd1));
sd2=zeros(1,length(cd2)); %1-3层置0,4-7层用软阈值函数处理
sd3=zeros(1,length(cd3));
sd4=wthresh(cd4,’s’,0.014);
sd5=wthresh(cd5,’s’,0.014);
sd6=wthresh(cd6,’s’,0.014);
sd7=wthresh(cd7,’s’,0.014);
c2=[ca11,sd7,sd6,sd5,sd4,sd3,sd2,sd1];
s0=waverec(c2,l,’coif5’); %小波重构
figure;
subplot(211);plot(s);subplot(212);plot(s0);%画图

具体的分解层数、在哪一层选用去噪函数,哪一层置0或做其他操作,或者选用哪个小波基根据要处理的信号来定,具体问题具体分析。

评论 57
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值