• 大小: 12KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-02
  • 语言: Matlab
  • 标签: BP网络  特征提取  

资源简介

本压缩包包含基于MATLAB的心电信号BP网络识别程序,可以在C盘上顺利运行,通过提取特征值实现分类识别。

资源截图

代码片段和文件信息

function [ QxQyRxxrySxSyPxPyTxTy] = DINGWEI( datafs )
%UNtitleD 此处显示有关此函数的摘要
%   此处显示详细说明
%=============峰值点前搜索找出R点====================
%=============差分====================
y=data;
n=length(y);
for i=1:(n-2)
f1(i)=(y(i+1)-y(i));%一阶向前差分
ff1(i)=f1(i)*f1(i);
end;
for i=1:(n-2)
f2(i)=(y(i+2)-2*y(i+1)+y(i));%二阶向前差分
ff2(i)=f2(i)*f2(i);
end;
f=ff1+ff2;%一阶二阶差分平方和
n1=0:length(f)-1;t1=n1/fs;
%=============阈值====================
ffd=f;
for i=1:10
    x=max(ffd);
    fmax(i)=x;%找差分平方和中10个最大值点
    zuo=find(ffd==max(ffd));%每个最大值点对应的横坐标
    ffd(zuo)=0;%令最大值点为0,方便找下一个最大值点
end
fmax;
fsum=sum(fmax);
fse=fsum/10;%10个最大值的平均值为fse
th=0.35*fse;%自适应阈值
% %=============峰值点前搜索找出R点====================
k=0;
for i=1:length(ffd)
    if ffd(i)>th  %阈值太小,就会有很多点,如何找出其中峰值最大的点
        k=k+1;Ry(k)=ffd(i);Rx(k)=i;%将R值点的众坐标放于Ry中横坐标放于Rx中
    end
end
w=1;s=0;a(w)=Rx(1);
for i=1:length(Rx)-1
    if Rx(i+1)-Rx(i)>100
        w=w+1;a(w)=Rx(i+1);s=s+1;b(s)=Rx(i);
    end
b(s+1)=Rx(length(Rx));
end
c=b;
for i=1:length(a)
   if ( b(i)-a(i)~=max(b-a));
       c(i)=b(i)+(max(b-a)-(b(i)-a(i)));
   end
end
for i=1:length(a)
    ddq(i:)=(y(a(i):c(i)));%a(i)与b(i)间距必须相同,否则不匹配
    ry(i)=max(y(a(i):c(i)));%
    xm=find(ddq(i:)==max(ddq(i:)));
    rx(i)=a(i)+xm(1);
end
for i=1:length(rx)
    Rxx(i)=rx(i)-1;
end
for i=1:(length(rx))   
    plot((Rxx(i))/fsry(i)‘or‘);%标记定位R点
end
%=============峰值点前搜索找出Q点====================
for i=1:length(Rxx)
    dq(i:)=(y((Rxx(i)-50):Rxx(i)));
    Qy(i)=min(y((Rxx(i)-50):Rxx(i)));%左边50个点搜索最小值
    xm=find(dq(i:)==min(dq(i:)));
     Qx(i)=Rxx(i)-51+xm(1);
end 
for i=1:(length(Qx))   
     plot(Qx(i)/fsQy(i)‘*k‘);%标记定位Q点
end
%=============峰值点前搜索找出S点====================
for i=1:length(Rxx)
    dqs(i:)=(y((Rxx(i)):(Rxx(i)+50)));
    Sy(i)=min(y((Rxx(i)):(Rxx(i)+50)));%左边50个点搜索最小值
    xmS=find(dqs(i:)==min(dqs(i:)));
     Sx(i)=Rxx(i)+xmS(1);
end 
for i=1:(length(Sx))   
     plot(Sx(i)/fsSy(i)‘*r‘);%标记定位Q点
end
%=============定位P点====================
for i=1:length(Rxx)
    dqp(i:)=(y((Qx(i)-ceil(0.16*fs)):Qx(i)));
    Py(i)=max(y((Qx(i)-ceil(0.16*fs)):Qx(i)));%两种信号采样频率不同,搜索范围不一样????
    xm=find(dqp(i:)==max(dqp(i:)));
     Px(i)=Qx(i)-0.16*fs+xm(1);
end 
for i=1:(length(Px))   
     plot(Px(i)/fsPy(i)‘om‘);%标记定位p点
end
%=============定位T点====================
for i=1:length(Sx)
    dqt(i:)=(y((Sx(i)):(Sx(i)+ceil(0.3*fs))));
    Ty(i)=max(y((Sx(i)):(Sx(i)+ceil(0.3*fs))));%左边250个点搜索最小值
    xmT=find(dqt(i:)==max(dqt(i:)));
     Tx(i)=Sx(i)+xmT(1);
end 
for i=1:(length(Tx))   
     plot(Tx(i)/fsTy(i)‘og‘);%标记定位t点
end
end


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

     文件       2939  2017-11-15 09:20  程序\DINGWEI.m

     文件       2331  2017-11-24 21:36  程序\importmit.m

     文件       1517  2017-11-25 09:23  程序\inputtest.txt

     文件       2308  2017-11-25 09:23  程序\inputtrain.txt

     文件       1164  2017-11-25 09:58  程序\main.m

     文件       6823  2017-11-24 21:32  程序\rddata.m

     文件        622  2017-11-10 20:02  程序\sigDEN.m

     文件      17445  2017-11-24 21:54  程序\tezhengtiqu.m

     文件        877  2017-11-13 09:57  程序\ztezhengtiquhanshu.m

     目录          0  2017-11-25 10:44  程序

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

                36026                    10


评论

共有 条评论