ECG经验模式分解的 R 波检测算法

本文详细介绍了经验模态分解(EMD)的基本原理,并提供了一段MATLAB代码实现。通过分层迭代的方式,将信号分解为多个内在模态函数(IMF),适用于非线性和非稳态数据的分析。EMD是一种自我适应的数据分解方法,对于信号处理和模式识别具有重要应用。
摘要由CSDN通过智能技术生成

function allmode=emd(Y)
%用于经验模态分解,Y为要分解的数据,allmode为分解出来的模态IMF
xsize=length(Y);
dd=1:1:xsize;
Ystd=std(Y);
Y=Y/Ystd;

TNM=7;% 分7段
TNM2=TNM+2;
for kk=1:1:TNM2, 
    for ii=1:1:xsize,
        allmode(ii,kk)=0.0;
    end
end

%part3 EMD分层
for iii=1:1:NE,  

    for i=1:xsize,
        temp=0;
        X1(i)=Y(i)+temp;
    end
    for jj=1:1:xsize,
        mode(jj,1) = Y(jj);
    end
    xorigin = X1;
    xend = xorigin;
    
    %IMF循环
    nmode = 1;
    while nmode <= TNM,
        xstart = xend; 
        iter = 1;     
        while iter<=10-3,
            [spmax, spmin, flag]=extrema(xstart); 
            upper= spline(spmax(:,1),spmax(:,2),dd); %极大值
            lower= spline(spmin(:,1),spmin(:,2),dd); %极小值
            mean_ul = (upper + lower)/2;%中间值
            xstart = xstart - mean_ul;%提取剩余项
            iter = iter +1;
        end
         xend = xend - xstart;
   
            nmode=nmode+1;
        for jj=1:1:xsize,
            mode(jj,nmode) = xstart(jj);
        end

    end
    for jj=1:1:xsize,
        mode(jj,nmode+1)=xend(jj);
    end
     allmode=allmode+mode;
end
allmode=allmode*Ystd;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>