ECGPUWAVE 1.3.4

File: <base>/src/matlab/ecgpuwave-m/buscapic2.m (955 bytes)
function [peaks,locs]=buscapic2(x,thresh,number,sortem)
%Devuelve la posición y valor de los picos de un
%segmento de señal. Evita picos de una sola muestra.
if nargin==1
   thresh=-inf; number=-1; sortem=0;
elseif nargin==2
       number=-1; sortem=0;
elseif nargin==3
       sortem=0;
end
if (strcmp(sortem,'sort'))
    sortem=1;
end

%[M,N]=size(x);
%if M==1
%   x=x(:);
%   [M,N]=size(x);
%end


M=length(x);

if any(imag(x(:))~=0)
   x=abs(x);
end

mask=diff(sign(diff(x(:))));
mask=[0;mask;0];
jkl=find(abs(mask)>0 &abs(x)>=thresh);
njkl=zeros(1,number);
if number>0 & length(jkl)>number
	[tt,ii]=sort(abs(x(jkl)));
        ii=flipud(ii);
	njkl(1)=jkl(ii(1));
	i=2;
	for l=2:length(jkl)-1
		if (abs(x(jkl(ii(l))))>=0.5*abs(x(jkl(ii(l-1))))) & (abs(x(jkl(ii(l))))>=0.5*abs(x(jkl(ii(l+1)))))
	         	if i<=number	
				njkl(i)=jkl(ii(l));
				i=i+1;
			end
		end
    	end
	njkl=sort(njkl); 
end

L=length(njkl);
peaks(1:L)=x(njkl);
locs(1:L)=njkl;