function znacky = rozmereni(vstup_sig,typ,fvz)
%--------------------------------------------------------------------------
% SKRIPT PRO NALEZENÍ SPECIFICKÝCH BODŮ V EKG SIGNÁLU
%--------------------------------------------------------------------------

%------ INICIALIZACE ------------------------------------------------------

% clear all;
% close all;

%------ PARAMETRY SIGNÁLU -------------------------------------------------

% typ = 'c';
% fvz = 500;

% parametry programu / menit jen v pripade spatne detekce QRS
if      typ == 'c'
        pasma = [15 41];    % zakladni pasmo pro cloveka
        konst(1) = 1.55;    % prahova konstanta pro R
        konst(2) = 1.55;    % prahova konstanta pro TP
        konst(3) = 0.1;     % minimalni vzdalenost mezi dvema QRS komplexy v sekundach  
        
elseif  typ == 'k'
        pasma = [5 14];     % zakladni pasmo pro kralika
        konst(1) = 1.85;    % prahova konstanta pro R
        konst(2) = 1.85;    % prahova konstanta pro TP
        konst(3) = 0.03;    % minimalni vzdalenost mezi dvema QRS komplexy v sekundach  
else
        error('Zvolte typ bud c (clovek), nebo k (kralik)')
end

pasma = pasma*fvz/500;
vlnka = 'bior1.5';          % typ vlnky
prodl = fvz/5;              % osetreni zacatku a konce delky "k"

parametry = {typ,fvz,konst};

%------ NAČTENÍ SIGNÁLU ---------------------------------------------------

% if      typ == 'c'
% % CSE
% vstup_sig = load_cse('D:\work\CSE\W005.II','short',5000,0);
% 
% else
% % KRALIK
% % usek = 2000;
% % delka = 20000;
% % vstup_sig=load_kralik(...
% %     'G:\DATA\CARDIO\data_EKG_AP\20061201\','20061201_ECG_I.bin',...
% %     'double',delka,(usek-1)*10000);
% load D:\work\KRALICI\databaze.mat
% vstup_sig = databaze(3,1:10000);
% 
% end

if  length(vstup_sig) < 3*fvz;
    error('Vstupní signál je kratší nežli 3*fvz vzorků. Nelze zpracovat!')
end

vstup_sig = vstup_sig - mean(vstup_sig);

%------ UPRAVA DELKY 1 ----------------------------------------------------

% prodlouzeni signalu na zacatku a konci
zacatek(1:prodl) = vstup_sig(1);
konec(1:prodl) = vstup_sig(end);
vstup_sig = [zacatek vstup_sig konec];

%------ CWT ---------------------------------------------------------------

bands = cwt(vstup_sig,pasma,vlnka);  % vypocet CWT pro zvolene pasmo

%------ UPRAVA DELKY 2 ----------------------------------------------------

% opetovne zkraceni signalu a pasma na puvodni delku
bands = bands(:,prodl+1:end-prodl);
vstup_sig = vstup_sig(prodl+1:end-prodl);

%------ PRŮCHODY NULOU A MAXIMA -------------------------------------------

[nuly_R, extremy_R] = pruchody(bands(1,:));
prah_R = konst(1)*std(bands(1,:),1);

[nuly_TP, extremy_TP] = pruchody(bands(2,:));
prah_TP = konst(2)*std(bands(2,:),1);

%------ DETEKCE QRS -------------------------------------------------------

[QRS,QRSpol,RRmed] = QRSdetect(nuly_R,extremy_R,prah_R,parametry);

%------ DETEKCE QRS ONSET -------------------------------------------------

[QRSonset] = QRSonsetdetect(nuly_R,extremy_R,prah_R,RRmed,QRSpol,bands,parametry);

%------ DETEKCE QRS OFFSET ------------------------------------------------

[QRSoffset] = QRSoffsetdetect(nuly_R,extremy_R,prah_R,RRmed,QRSpol,bands);

%------ DETEKCE T ---------------------------------------------------------

[T,Tpol] = Tdetect(nuly_TP,extremy_TP,prah_TP,QRSonset,QRSoffset,RRmed);

%------ DETEKCE T END -----------------------------------------------------

[Tend] = Tenddetect(nuly_TP,extremy_TP,RRmed,QRSonset,T,Tpol,bands);

%------ DETEKCE P ---------------------------------------------------------

[P,Ppol] = Pdetect(nuly_TP,extremy_TP,prah_TP,QRSonset,QRSoffset,RRmed);

%------ DETEKCE P ONSET ---------------------------------------------------

[Ponset] = Ponsetdetect(nuly_TP,extremy_TP,RRmed,QRSoffset,P,Ppol,bands);

%------ DETEKCE P OFFSET --------------------------------------------------

[Poffset] = Poffsetdetect(nuly_TP,extremy_TP,RRmed,QRSonset,P,Ppol,bands);

%------ VYSTUP ------------------------------------------------------------

znacky = {P,QRS,T; Ponset,QRSonset,[]; Poffset, QRSoffset, Tend};

%------ ZOBRAZENÍ ---------------------------------------------------------

% figure;
% plot(vstup_sig)
% % hold on;
% % plot(bands(2,:),'b:')
% % hold off;
% Y = axis;
% % line([1;length(vstup_sig)],[0;0],'Color','m','LineStyle',':')
% line([QRS;QRS],[0.9*Y(3);0.9*Y(4)],'Color','k','LineStyle','--')
% line([QRSonset;QRSonset],[0.9*Y(3);0.9*Y(4)],'Color','k','LineStyle',':')
% line([QRSoffset;QRSoffset],[0.9*Y(3);0.9*Y(4)],'Color','k','LineStyle',':')
% line([T;T],[0.9*Y(3);0.9*Y(4)],'Color','g','LineStyle','--')
% line([Tend;Tend],[0.9*Y(3);0.9*Y(4)],'Color','g','LineStyle',':')
% line([P;P],[0.9*Y(3);0.9*Y(4)],'Color','r','LineStyle','--')
% line([Ponset;Ponset],[0.9*Y(3);0.9*Y(4)],'Color','r','LineStyle',':')
% line([Poffset;Poffset],[0.9*Y(3);0.9*Y(4)],'Color','r','LineStyle',':')
% title('Detection of ECG significant points')
% xlabel('samples [-]')
% ylabel('voltage {[{\mu}V]}')

%--------------------------------------------------------------------------