function [QRS etime] = detektorQRS_obalka (signal)
%%%VEVERKA VOJTĚCH, 2015
global QRS etime
stime=tic;
%%%PŘEDZPRACOVÁNÍ%%%
%nastavení filtru
fvz=500; %vzorkovací frekvence
N=251; %řád filtru

         
%%%ÚPRAVA DÉLKY SIGNÁLU%%%
k = fvz/5;   %ošetření začátku a konce
zacatek(1:k) = signal(1);
konec(1:k) = signal(end);
signal = [zacatek signal konec];

pp=fir1(N,[15 30]/(fvz));%natavení parametrů filtru

%filtrace pásmovou propusti
y1 = filter( pp, 1, signal );


%eliminace zpoždění způsobeného zpožďovacími členy filtru FIR
delay = mean(grpdelay(pp));
y1(1:delay) = [];
y1=y1(100:5075);

y = hilbert(y1);
y = abs(y);

%umocnění obálky
y=y.^2;

%%%DETEKCE%%%

d = length(y);              % delka signalu
prah=mean(y);               % prahová hodnota
QRS= [];                    % vektor pro uložení QRS komplexů
okno = 120;                 % delka okna pro vyhledávání nadprahových hodnot
ref = 0.20*fvz;             % refrakterní fáze
krok = 50;                   % priprava kroku pro while
y=[y, zeros(1,okno)];       % rozšíření signálu o délku okna
     
while krok<d; %od signalu se odecte delka okna

    
    if y(krok)>prah;    %pokud najde nadprahovou hodnotu
        
        kus = y(krok:krok+okno); % vezme se maximum v následujícím bloku signálu 
        [hodnota,poloha] = max( kus ); 
        QRS = [QRS, krok+poloha-1]; % poloha se uloží do vektoru QRS
        krok=QRS(end)+ref;      % k poslední hodnotě QRS se přičte rekrakterní fáze
       if length(QRS)>=2 
           RR=QRS(end)-QRS(end-1); 
           RR1=RR*1.66;
       end            
        if length(QRS)>=2
            if  krok==(QRS(end)+RR1)% pokud nepříjde další QRS i po refrakterní fázi...
                prah=0.5*prah;      % ...sníží se prahová hodnota
                krok=QRS(end)+ref;  
            end
        end
    end
    krok=krok+1;
end
etime=toc(stime);

end