• 大小: 820KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-05-10
  • 语言: 其他
  • 标签: qrs  

资源简介

上面程序获得的数据就不便于使用了,因为那是转换为具有实际意义的心电数据,信号数据值一般在-2~2之间,单位是mV。那么,要找新的ECG读取程序来获取数据吗?不用!实际上,程序rddata.m中本身就是把MIT .dat 文件中存储的二值数据转换为十进制数据,然后再进一步处理转换成具有实际意义的心电信号值。我们进行信号处理时,需要用到的就是从二值数据转换来的初始十进制数据,由于 .dat文件中是三个字节存储2个数,即每个数12bits,转换后得到的十进制数范围应该是0~2048。我所理解的数据存储方式图示如下,不知是否正确,仅供参考:

资源截图

代码片段和文件信息

%本程序实现基于小波变换的QRS波的检测   %
%郑秀玉  深圳大学德州仪器DSPs实验室   %
%2007年7月2日                        %

clear all;
close all;
points=4096;       level=4;    sr=360; 
%读入ECG信号
load ecgdata.mat;
ecgdata=mydata‘;
g=importdata(‘yy.json‘);
ecgdata =g;
plot(ecgdata(1:points));grid on;axis tight;axis([1points-0.0010.0015]);
title(‘ECG信号‘);

swa=zeros(4points);
swd=zeros(4points);
signal=ecgdata(0*4096+1:1*4096);

%算小波系数和尺度系数
for i=1:points-3
  swa(1i+3)=1/4*signal(i+3-2^0*0)+3/4*signal(i+3-2^0*1)+3/4*signal(i+3-2^0*2)+1/4*signal(i+3-2^0*3);
   swd(1i+3)=-1/4*signal(i+3-2^0*0)-3/4*signal(i+3-2^0*1)+3/4*signal(i+3-2^0*2)+1/4*signal(i+3-2^0*3);
end
j=2;
while j<=level
   for i=1:points-24
     swa(ji+24)=1/4*swa(j-1i+24-2^(j-1)*0)+3/4*swa(j-1i+24-2^(j-1)*1)+3/4*swa(j-1i+24-2^(j-1)*2)+1/4*swa(j-1i+24-2^(j-1)*3);
     swd(ji+24)=-1/4*swa(j-1i+24-2^(j-1)*0)-3/4*swa(j-1i+24-2^(j-1)*1)+3/4*swa(j-1i+24-2^(j-1)*2)+1/4*swa(j-1i+24-2^(j-1)*3);
   end
   j=j+1;
end
%画出原信号和尺度系数,小波系数
figure;
subplot(level11); plot(ecgdata(1:points)); grid on;axis tight;
title(‘ECG信号及其在j=1234尺度下的尺度系数及小波系数‘);
for i=1:level
    subplot(level+122*(i)+1);
    plot(swa(i:)); axis tight;grid on;xlabel(‘time‘);
    ylabel(strcat(‘a   ‘num2str(i)));
    subplot(level+122*(i)+2);
    plot(swd(i:)); axis tight;grid on;
    ylabel(strcat(‘d   ‘num2str(i)));
end

%画出原图及小波系数
figure;
subplot(level11); plot(real(ecgdata(1:points))‘b‘); grid on;axis tight;
title(‘ECG信号及其在j=1234尺度下的小波系数‘);
for i=1:level
    subplot(level+11i+1);
    plot(swd(i:)‘b‘); axis tight;grid on;
    ylabel(strcat(‘d   ‘num2str(i)));
end

%**************************************求正负极大值对*****************************************%
ddw=zeros(size(swd));
pddw=ddw;
nddw=ddw;
%小波系数的大于0的点
posw=swd.*(swd>0);
%斜率大于0
pdw=((posw(:1:points-1)-posw(:2:points))<0);
%正极大值点
pddw(:2:points-1)=((pdw(:1:points-2)-pdw(:2:points-1))>0);
%小波系数小于0的点
negw=swd.*(swd<0);
ndw=((negw(:1:points-1)-negw(:2:points))>0);
%负极大值点
nddw(:2:points-1)=((ndw(:1:points-2)-ndw(:2:points-1))>0);
%或运算
ddw=pddw|nddw;
ddw(:1)=1;
ddw(:points)=1;
%求出极值点的值其他点置0
wpeak=ddw.*swd;
wpeak(:1)=wpeak(:1)+1e-10;
wpeak(:points)=wpeak(:points)+1e-10;

%画出各尺度下极值点
figure;
for i=1:level
    subplot(level1i);
    plot(wpeak(i:)); axis tight;grid on;
ylabel(strcat(‘j=   ‘num2str(i)));
end
subplot(411);
title(‘ECG信号在j=1234尺度下的小波系数的模极大值点‘);

interva2=zeros(1points);
intervaqs=zeros(1points);
Mj1=wpeak(1:);
Mj4=wpeak(3:);

%画出尺度3极值点
figure;
plot (Mj4);
title(‘尺度3下小波系数的模极大值点‘);

posi=Mj4.*(Mj4>0);
%求正极大值的平均
thposi=(max(posi(1:round(points/4)))+max(posi(round(points/4):2*round(points/4)))+max(posi(2*round(points/4):3*round(points/4)))+max(posi(3*round(points/4):4*round(points/4))))/4;
posi=(posi>thposi/3);
nega=Mj4.*(Mj4<0);
%求负极大值的平均
thnega=(min(nega(1:round(points/4)))+min(nega(round(points/4):2*round(points/4)))+min(nega(2*round(points/4):

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       4558  2008-03-30 12:34  检测QRS超级好用\100.atr

     文件    1950000  2008-03-30 12:34  检测QRS超级好用\100.dat

     文件        143  2008-03-30 12:34  检测QRS超级好用\100.hea

     文件       5680  2018-03-05 17:32  检测QRS超级好用\ecgdata.mat

     文件       7178  2018-03-05 16:52  检测QRS超级好用\ecgdetect.m

     文件       6646  2008-03-30 12:34  检测QRS超级好用\graduatedemo.asv

     文件       5470  2018-02-28 20:28  检测QRS超级好用\rddata.m

     文件     165111  2018-03-05 16:25  检测QRS超级好用\yy.json

     目录          0  2018-03-05 16:47  检测QRS超级好用

----------- ---------  ---------- -----  ----

              2144786                    9


评论

共有 条评论