资源简介
对心电信号进行降噪处理后,提取P、Q、R、S、T特征值及心律HR等18个特征值
代码片段和文件信息
clc;
tic
x=load (‘E:\心电脉搏实验资料\20110412睡意状态\xuwei_v5_0.txt‘);
x=x‘; %转为行向量
x=x(660001:720000);
d=x;
sfreq=1000;%采样
s=length(d);%信号长度
s2=1./sfreq;%采样周期
s3=round(s./s2);%有多少周期信号,若是小数区里最近的整数
N=length(d);
r=1:1:N-1;
C=[1r+1];% 序列 x对应的采样点数
fs=1000;%采样频率
figure(1)
subplot(211)plot(d);grid;
xlabel(‘时间/ms‘);
ylabel(‘幅值/mv‘);
title(‘原始信号‘);
axis tight;
%低通去除基线漂移
k = .7; % cut-off value
fc=0.8/fs;
alpha = (1-k*cos(2*pi*fc)-sqrt(2*k*(1-cos(2*pi*fc))-k^2*sin(2*pi*fc)^2))/(1-k);
y = zeros(size(d));
for i = 1:size(d1) %可以去掉
y(i:) = filtfilt(1-alpha[1 -alpha]d(i:));
end
x=d-y;
subplot(212);
plot(x);grid;
xlabel(‘时间/ms‘);
ylabel(‘幅值/mv‘);
title(‘去除基线漂移后的信号‘);
axis tight;
% bandpass滤波
% figure(3);
[ba]=butter(2[0.5 100]/200‘bandpass‘);
y=filter(bax);
% 椭圆带阻滤波器
figure(4);
wp1=48;
wp2=52;
ws1=49;
ws2=51;
wp=[wp1 wp2];
ws=[ws1 ws2];
rp=0.1;
rs=50;
fs=1000;
[nwn]=ellipord(2*wp/fs2*ws/fsrprs);
[numden]=ellip(nrprswn‘stop‘);
[hw]=freqz(numden);
% 椭圆带阻滤波器滤除50Hz工频干扰
h=filter(numdeny);
%利用小波分解进行第一次降噪
[cl]=wavedec(h5‘coif5‘); %小波分解
a5=wrcoef(‘a‘cl‘coif5‘5);%重构第五层逼近信号
d5=wrcoef(‘d‘cl‘coif5‘5);%重构第1--5层细节信号
d4=wrcoef(‘d‘cl‘coif5‘4);
d3=wrcoef(‘d‘cl‘coif5‘3);
d2=wrcoef(‘d‘cl‘coif5‘2);
d1=wrcoef(‘d‘cl‘coif5‘1);
a2=wrcoef(‘a‘cl‘coif5‘2);
%去除躁声,重构信号
y=a5+d5+d4;
%进行二次降噪
wavelet=‘sym5‘;
level=5;
alpha=1.5;
sorh=‘s‘;
[cl]=wavedec(ylevelwavelet);
[thrnkeep]=wdcbm(clalpha);
[xdcxdlxdperf0perfl2]=wdencmp(‘lvd‘ clwaveletlevelthrsorh);%重构信号
xx=xd;
for n=13:length(xx)-11
ex(n) = (xx(n)^2) - ((xx(n-10)) * (xx(n+10)));%采用Teager能量算子的方法来确定ECG信号R波的位置
end
subplot(311)plot(ex‘r‘);grid;
axis tight
axis xy
%*************************************************
m=bartlett(7);
mm=m(2:6);
eey=conv(exmm);
subplot(312);plot(eey‘b‘);grid;
axis tight
for i=1:length(eey)-1
% %eey1(i)=eey(i+1)-eey(i);
% %eeym=max(eey)-min(eey);
% %eey2(i)=abs(eey1(i)/eeym);
eey1(i)=abs(eey(i));
end
subplot(313);
plot(eey1‘g‘);grid;
axis tight
c=10;
sm0=0;
for i=1:length(eey1)
sm0=sm0+eey1(i);
end
sm1=1/length(eey1);
thr2=c*sm1*sm0;
%%%%%%
eey2=eey1;
for i=1:length(eey2)
if eey2(i)>=thr2
reg1(i)=1;
else
reg1(i)=0;
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
k3=0;
k4=0;
k1=round(0.5*sfreq);
for n=1:round(length(eey2)/k1)
for i1=((n-1)*k1+1):n*k1
for k2=1:10
if i1<=(length(reg1)-11) & reg1(i1)==1 & reg1(i1+1)==0 & reg1(i1+1+k2)==1
reg1(:[i1:i1+1+k2])=1;
end
end
end
end
for n=1:round(length(eey2)/k1)
for i2=((n-1)*k1+1):n*k1
if i2<=length(reg1)-1 & reg1(i2)==0 & reg1(i2+1)==1
k3=k3+1;
qrs1(k3)=i2;
end
if i2<=(length(reg1)) & reg1(i2)==1 & reg1(i2+1)==0
k4=k4+1;
qrs2(k4)=i2;
end
end
end
c=zeros(1k3);b=zeros(1k3);mr=[];
for m1=1:k3
[c(m1)b(m1)]=max(xd(qrs1(m1):qrs2(m1)
- 上一篇:哈弗曼费诺汉明码matlab
- 下一篇:径向基网络预测地下水位 matlab仿真实验
相关资源
- matlab实现图像边缘检测、图像分割、
- 轴承故障分析
- LBP(局部二值模式)特征提取
- 独立分量ICA图像特征提取程序和图片
- SVM的手写数字识别(Handwriting recogni
- 高斯混合模型(GMM)
- LBP特征提取的MATLAB实现
- 读取MIT-BIH数据库
- 心电信号(ECG)处理
- 时域、频域特征提取
- 振动信号频域特征提取算法
- hog特征提取matlab实现
- rdmat函数,可读取心电数据生成ECG心电
- matlab模拟心电波形有用的来了-心电
- 希尔伯特包络谱matlab
- 小波包特征提取
- 表面肌电sEMG特征提取的Matlab程序
- ECG特征提取
- MATLAB图像纹理特征提取代码
- matlab 心电信号去噪算法
- ECG心电信号matlab仿真画图
- Haar-like特征提取功能
- 图像SURF特征提取(SURF extraction)
- 提取图像纹理特征值
- image-texture-features 图像纹理特征提取
- QRSdetection 心电信号QRS复波实时检测代
- sift sift 特征提取算法matlab实现
- ECG-rpeakdetect 心电信号R波检测
- wenli 分析了纹理特征提取方法
- DoGfilters DOG高斯差分实现物体识别中的
评论
共有 条评论