function[QRS etime]= transformace_svodu(signals)
%%%VEVERKA VOJTĚCH,2015
stime=tic;
svodu = size(signals,1);
fvz=500;
N=251;
delka=length(signals);



if svodu==12
    x=signals(8,:);
    y=signals(11,:);
    z=signals(2,:);
elseif svodu==3
    x=signals(1,:);
    y=signals(2,:);
    z=signals(3,:);
end

for n=1:delka
   p(n)=sqrt((x(n).^2)+(y(n).^2)+(z(n).^2));
end
pp=fir1(N,[15 30]/(fvz));
p = filter( pp, 1, p );

delay = mean(grpdelay(pp));
p(1:delay) = [];
p = hilbert(p);
p = abs(p);
p=p.^2;


d = length(p);              % delka signalu
prah=mean(p);               % 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 = 1;                   % priprava kroku pro while
p=[p, zeros(1,okno)];       % rozšíření signálu o délku okna

while krok<d; %od signalu se odecte delka okna

    
    if p(krok)>prah;    %pokud najde nadprahovou hodnotu
        
        kus = p(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