小波分析在心电信号去噪中的应用程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
%应用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的无偏似然估计原理进行选择各层的阈值
%cD1,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越大效果越好,
%MSE越小越好)------------------------
%选取信号的长度。
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