心脏兴奋电活动过程可由心电信号(ECG)来反映,心电信号也是医学上对心血管疾病诊断的重要科学依据。心电信号具有一定的随机性且一般情况下十分微弱,在信号采集、放大及变换过程中,心电信号容易受到人体呼吸及检测仪器等因素影响,从而引入多种不同种类的噪声,如基线漂移、工频干扰、肌电干扰等。这些噪声引入会使心电信号发生某种程度的畸变,从而给病情分析及诊断带来一定的影响。因此,医学诊断中心电信号去噪是心脏智能诊断所要研究的重要课题。
为减小或最大限度消除心电信号中存在的噪声干扰,目前,国内外的研究学者已提出多种去噪方法。小波变换具有多分辨率分析的特点,且是时频域化的数学工具,小波变换通常适用于对时变非平稳信号分析。在小波变换处理信号的过程中,最为重要的就是阈值的选取,Donoho和Johnstone提出固定阈值、无偏风险阈值、极大极小阈值和启发式阈值。这些阈值在去噪处理中效果十分显著但也具有一些缺点,例如:无偏风险阈值通常在小波系数稀疏时处理效果不明显;固定阈值去噪处理时过度平滑信号;极大极小阈值及启发式阈值对去噪重构后的信号在时域上得不到较好的处理效果。
针对传统小波阈值去噪算法不能有效去除心电信号中所参杂的基线漂移及工频干扰,重构信号会产生伪吉布斯现象。小波熵阈值去噪新算法是根据不同分解尺度上信号和噪声能量分布不同的特点,滤除一部分的基线漂移及工频干扰。
鉴于此,提出一种基于小波熵阈值的心电信号R波检测算法,运行环境为MATLAB 2018。
clear all
close all
clc
select=input('enter a no to select mat file \n Options \n 0 for advanced options\n 1 for ECGDATA\n 2 for ravi \n 3 for matlabnew\n \n\n\');%select data
switch select
case 1
load('ECGDATA');
ecg=ECG_1;
v=ecg;
tmax=max(Time_Adjusted);
t=Time_Adjusted;
case 2
load('ravidata');
ecg=v;
tmax=max(t);
case 3
load('matlabnew');
ecg=v;
tmax=max(t);
otherwise
name=input('enter the name of mat file consisting \necg samples in variable ''v'' \n and \ntime in variable ''t''\n\n\n','s')
load(name);
ecg=v;
tmax=max(t);
end
sr=numel(ecg)/max(tmax);
srate=['sampeling rate is ' num2str(sr)];
disp(srate)
rt=['recording_time=' num2str(tmax) 'sec'];
%完整代码:mbd.pub/o/bread/mbd-ZZWVmp1u
disp(rt)