function [Sp,QRS2,type,Sgran]=buscaS(n,X,D,Der,PKni,Rp,Sp,M,I,ymax,imax,ymin,imin,dermax,type,Sgran,Fs,Kr,Ks) %Busca posición onda S y final QRS. %Inicializamos variables. Sp=[]; QRS2=[]; Sex=1; crece=0; iumb=[]; Daux=Der(imin:length(Der)); ncero=buscacero(Daux); ncero=imin+ncero-1; %if abs(Der(ncero-1))< abs(Der(ncero)) ncero=ncero-1; end Daux=D(imin:length(D)); nceau=buscacero(Daux); nceau=imin+nceau-1; %if abs(D(nceau-1))130e-3&Rp>=PKni Sex=0; end if nceau=length(D) ilim=length(D); end Daux=D(nceau:ilim); [ypic,mpic]=max(Daux); mpic=nceau+mpic-1; if ypic=nceau); %Cambio > por >='. mpic=I(Iq(1)); end Iq=find(I>imin); icep=I(Iq(1)); %Protección para casos en que la derivada casi crece el cero. if abs(D(mpic))>dermax/30 & (~(icep=6.2 Ks=3*Ks+1; %Antes 6.2 elseif (D(mpic))>=4.75 Ks=3*Ks; %Antes 4.75 elseif (D(mpic))>=4 Ks=3*Ks-1; %Antes 4. end umbral=(D(mpic))/Ks; inicio=mpic+round(10e-3*Fs); Daux=D(mpic:length(D)); iumb=crearumbral(Daux,umbral); iumb=mpic+iumb-1; Iq=find(I>inicio); if ~isempty(Iq) %RBL ipic=I(Iq(1)); if (ipic200e-3 %Antes 200ms. %No existe onda S. umbral=(D(mpic))/Kr; Daux=D(mpic:length(D)); iumb=crearumbral(Daux,umbral); iumb=mpic+iumb-1; inicio=mpic+round(10e-3*Fs); Is=find(I>inicio); ipic=I(Is(1)); if ipicncero); mpic=Id(Is(1)); mpic=testpic(Der,mpic,Fs,1); if abs(Der(mpic))=PKni Sex=0; end if (Sex==1) umbral=(Der(mpic))/Ks; Daux=Der(mpic:length(Der)); iumb=crearumbral(Daux,umbral); iumb=mpic+iumb-1; inicio=mpic+round(10e-3*Fs); Is=find(I>inicio); ipic=I(Is(1)); if ipic200e-3 %No existe onda S. umbral=(D(mpic))/Kr; Daux=D(mpic:length(D)); iumb=crearumbral(Daux,umbral); iumb=mpic+iumb-1; inicio=mpic+round(10e-3*Fs); Is=find(I>inicio); ipic=I(Is(1)); if ipic200e-3&Rp>=PKni Sex=0; Sp=[]; end %Si no existe onda S, buscamos el final de la onda R. if (Sex==0) umbral=(D(imin))/Kr; Daux=D(imin:length(D)); iumb=crearumbral(Daux,umbral); iumb=imin+iumb-1; inicio=imin+round(10e-3*Fs); Is=find(I>inicio); ipic=I(Is(1)); if ipicQRS2 % Sex=0; Sp=[]; %end end