几种小波去噪函数的比较

2020-05-24 10:17

实例1

%应用db5作为小波函数进行3层分解 %利用无偏似然估计阈值

%对100.dat from MIT-BIH-DB的单导联数据进行去噪处理 clear;clc

load('D:/matlab/matlab7.2/work/M.mat'); E=M(:,2); E=E';

n=size(E); s=E(1:2000); %小波分解

[C L]=wavedec(E,3,'db5');

% 从c中提取尺度3下的近似小波系数 cA3=appcoef(C,L,'db5',3);

%从信号c中提取尺度1,2,3下的细节小波系数 cD1=detcoef(C,L,1); cD2=detcoef(C,L,2); cD3=detcoef(C,L,3);

%使用stein的无偏似然估计原理进行选择各层的阈值 í1,cD2,cD3为各层小波系数, %'rigrsure’为无偏似然估计阈值类型 thr1=thselect(cD1,'rigrsure'); thr2=thselect(cD2,'rigrsure'); thr3=thselect(cD3,'rigrsure'); %各层的阈值

TR=[thr1,thr2,thr3]; %'s'为软阈值;'h'硬阈值。 SORH='s';

%--------去噪--------------- %XC为去噪后信号

%[CXC,LXC]为的小波分解结构

%PERF0和PERF2是恢复和压缩的范数百分比。 %'lvd'为允许设置各层的阈值, %'gbl'为固定阈值。 %3为阈值的长度

[XC,CXC,LXC,PERF0,PERF2]=wdencmp('lvd',E, ...'db5',3,TR,SORH);

%---------去噪效果衡量(SNR越大效果越好, %RMSE越小越好)%选取信号的长度。 N=n(2); x=E; y=XC; F=0; M=0;

for ii=1:N

m(ii)=(x(ii)-y(ii))^2; t(ii)=y(ii)^2; f(ii)=t(ii)/m(ii); F=F+f(ii); M=M+m(ii); end;

SNR=10*log10(F); MSE=M/N; SM=SNR/MSE;

%对比原始信号和除噪后的信号 subplot(2,1,1); plot(s(1:1000)); title('原始信号') subplot(2,1,2); plot(XC(1:1000)); title('除噪后的信号') SNR,MSE

实例2

小波去噪的M文件

局部放电试验所采集的信号中往往混有白噪声、周期干扰信号去除。此处采用常用db系列小波中的db6小波进行9尺度的多分辨分解后,根据白噪声能量特性,估算各尺度的阈值大小,采用硬值进行处理,后进行重构。Matlab程序如下:

function sd=xiao_denoise(mix_signal)

%此函数用于去除白躁信号&周期性干扰信号 %输入参数mix_signal为采集到的信号波形

s=[-1.58 0.42 0.46 0.78 -0.49 0.59 -1.3 -1.42 -0.16 -1.47 -1.35 0.36 -0.44 -0.14 1 -0.5 -0.2 -0.06 -0.6 0.42 -1.52 0.51 0.76 -1.5 0.16 -1.29 -0.65 -1.48 0.6 -1.65 -0.55]

p=0.6745; w_dept=9; w_name='db6'; coef=cell(1,w_dept);

thr=zeros(1,w_dept+1);

[c,l]=wavedec(mix_signal,w_dept,w_name); %对混合信号S进行db6的9尺度一维分解

coef(1)={appcoef(c,l,w_name,w_dept)};%计算尺度为9的一维分解低频系数 cs=[cs,coef_soft{j}];

thr(1)=median(abs(coef{1}))/p*sqrt(2*log(length(coef{1})));%计算1尺度上的阈值

coef_soft(1)={wthresh(coef{1},'h',thr(1))};%对小波系数进行阈值为thr(1)的硬阈值处理

cs=[coef_soft{1}]; for j=2:w_dept+1

coef(j)={detcoef(c,l,w_dept-j+2)};%计算尺度为9到2的各尺度高频小波系数 coef1(j)={detcoef(c,l,w_dept-j+2)};

thr(j)=median(abs(coef{j}))/p*sqrt(2*log(length(coef{j})));%计算9到2各尺度上的阈值

coef_soft(j)={wthresh(coef{j},'h',thr(j))};%对小波系数进行阈值为thr(j)的硬阈值处理

cs=[cs,coef_soft{j}]; end

sd=waverec(cs,l,w_name); %根据小波系数[cs,l]对信号进行重构 subplot(2,1,1);plot(s);title(‘原始信号’); subplot(2,1,2);plot(sd);title(‘重构信号’) 实例验证

为了验证去噪的有效性,先仿真产生一个局放脉冲然后叠加0.1倍白噪声和周期干扰,利用前面的程序去造,结果如图1,从图上可以看到去噪后信号与原始信号幅值、相位都基本没有变化程序如下:

fc=40e4; %振荡频率

t4=0.8e-3; %脉冲起始时间 tn=1e-3; %总时间 x=0:step:tn; x4=t4:step:tn;

%s4=(exp((t4-x4)*13/t)-exp((t4-x4)*22/t)).*sin(2*pi*fc*x4); s4=(exp((t4-x4)/tr)-exp((t4-x4)/td)).*sin(2*pi*fc*x4); s4=[zeros(1,t4/step),s4]; p=tn/step;

n=0.1*randn(1,p); %产生白噪信号 n=[n,0];

s5=0.1*sin(2*pi*10000000*x); %产生周期性干扰信号 s6=s4+n+s5; sd=liu_denoise(s6);

subplot(311);plot(x,s4);title('单个局放脉冲仿真波形'); subplot(312);plot(x,mix_signal);title('染噪后波形'); subplot(313);plot(x,sd);title('小波去噪后波形');

图1 小波去噪对比图


几种小波去噪函数的比较.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:小学数学人教2011课标版二年级万以内数的认识和近似数

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: