function [QRS1,Rp,Sp,R2p,QRS2,ymaxaux,type,Sgran]=buscaR(n,X,Xpb,D,Der,PKni,M,I,Fs,Kr,Ks,Krr) %Clasifica el complejo QRS. En el caso RSR' halla %los puntos significativos. En los casos QRS y QS devuelve %la posición de la onda R y S respectivamente. %Inicializacion variables. QRS1=[]; QRS2=[]; Qp=[]; Rp=[]; Sp=[]; R2p=[]; Rex=0; Qex=0; Sex=0; R2ex=0; type=0; noR=0; Sgran=0; %Busca pico a la derecha y la izquierda de la posición del QRS. Ir=find(I>PKni); mpicd=I(Ir(1)); Ir=find(I0&ydd<0&(kpi*ydi<(-1)*ydd|kpi*(-1)*ydd0&ydi>0&ydd<0)|((1+perc)*(-1)*ydi>ydd&(1-perc)*(-1)*ydincero); if ~isempty(Ir) mpda=I(Ir(1)); %if (-1*D(mpda)ncero); if ~isempty(Ir) mpic=I(Ir(1)); if ~((1+perc)*abs(ydd)>abs(D(mpic))&(1-perc)*abs(ydd)abs(ydd) %PKnii corresponde a la onda R'. Daux=flipud(D(1:mpici)); ncero=buscacero(Daux); ncero=mpici-ncero+1; if ~isempty(ncero) break; end Ir=find(Iabs(D(mpic))&(1-perc)*abs(ydi)150e-3 if Xpb(PKni)>0 type=1; %QRS normal. else type=3; %disp('tipo 3.3'); %Onda Q ó S muy grande. end end else type=3; %disp('tipo 3.4'); %Onda Q ó S muy grande. end else type=1; %QRS normal. end %Buscamos inicio y final del RSR'. if (type==2) Ir=find(I>R2p); mpicd=I(Ir(1)); Ir=find(Iprr*abs(D(mpici))|(PKni-nrtei)>(nrted-PKni)) %PKni corresponde a la onda Q, la onda R %estará en el primer cero a la derecha. Daux=D(mpicd:length(D)); ncero=buscacero(Daux); if isempty(ncero) break; end ncero=mpicd+ncero-1; Ir=find(I>ncero); mpda=I(Ir(1)); if (ncero-PKni)/Fs>150e-3|(-1)*D(mpda)140e-3|(ymax2<(-1)*ydi/10)|((Xpb(ncero))<-abs(Xpb(PKni))*1/6) if (PKni-ncero)/Fs>140e-3|(ymax2<(-1)*ydi/100)|(Xpb(ncero)<-abs(Xpb(PKni))*1/3) %JGM Rp=PKni; type=4; %Tipo complejo QS. else Rp=ncero; end end end end %Localizamos la onda R en el caso de QRS normal. if (type==1) Rp=PKni; R2p=[]; end