clear all
clc
%% ZMĚNA CESTY K DATABÁZI CSE



cesta = 'C:\Users\Jakub\Disk Google\BTBIO\BAKALARKA\program\';





%% Spouštěcí skript automatického rozměření signálu EKG
disp('Spuštěno... (vyčkejte přibližně 1 minutu)');

%% Základní definice proměnných, databáze atd.
% cesta k databázi je \CSE\CSE_MO1_X\MO1_Y_X.mat

Databaze = [12 3]; % výběr svodů, primárně určeno pro všech 15 svodů (12 + 3)
fvz = 500;      % vzorkovací frekvence
fmez1 = 1.2;    % filtrace pásmovou propustí
fmez2 = 26;     % filtrace pásmovou propustí     
vzdalenost = 45;    % Maximální vzdálenost signálu ve shlukování = 0,09s
N = [67 70];        % Vyřazené signály globálně 67 70 - nemají referenční hodnoty
%% Načtení signálů
od = 1;          % od
do = 125;         % do

for i = od:do;        % 125 vzorků     
        if Databaze == 12
                 load([cesta '\CSE\CSE_MO1_12\' 'MO1_' sprintf('%0.3d',i) '_' sprintf('%0.2d',Databaze)])
                % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -         
        elseif Databaze == 3
                load([cesta '\CSE\CSE_MO1_03\' 'MO1_' sprintf('%0.3d',i) '_' sprintf('%0.2d',Databaze)])
                % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
        elseif Databaze == [12 3] | [3 12]
                load([cesta '\CSE\CSE_MO1_12\' 'MO1_' sprintf('%0.3d',i) '_' sprintf('%0.2d',Databaze(1))])
                zalx = x;
                load([cesta '\CSE\CSE_MO1_03\' 'MO1_' sprintf('%0.3d',i) '_' sprintf('%0.2d',Databaze(2))])
                [r s] = size(zalx);
                [r2 s2] = size(x);
                novex = zeros(r+r2,s);
                novex(1:r,:) = zalx;
                novex(r+1:end,:) = x;
                x = novex;
        else
                fprintf('File %s does not exist.\n', matFileName);
        end
        % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

        %% Filtrace
        [ ECGPB, ECGDER, ECGDER2, ECGINT ] = Filtr( x, fvz, fmez1, fmez2 );

        %% Detekce R
        [ polohy_R, PR ] = R(ECGINT, fvz, ECGDER );
        
        %% Detekce Q, S, QRSb, QRSe
        [PQ, PS, QRSb, QRSe] = Q(ECGDER, PR);
        
        % Shlukování
        PR_shluk{i,1} = multiQRS(PR, vzdalenost);
        QRSb_shluk{i,1} = multiQRS(QRSb, vzdalenost,0);
        QRSe_shluk{i,1} = multiQRS(QRSe, vzdalenost, 0);
        
        %% Detekce Pbg, Pend, Tend
        b = fir1(47,10/(fvz/2),'low'); %filtrace pro T
        b2 = fir1(47,15/(fvz/2),'low'); %filtrace pro P
        
        for j = 1:sum(Databaze)
           DERFI(j,:) = filtfilt(b,1,ECGDER(j,:));
           DERFI2(j,:) = filtfilt(b2,1,ECGDER(j,:));
        end
      
        [Pbg_loc, Pend_loc, Pbg, Pend] = P( DERFI2, PQ, Databaze );
        
        Pbg_shluk{i,1} = cell2mat(Pbg);
        Pend_shluk{i,1} = cell2mat(Pend);
        
        [Tend_loc, Tend] = T( DERFI, PS, Databaze);
        Tend_shluk{i,1} = cell2mat(Tend);
        
end

%% Statistické zhodnocení
[ Se SO PO Chyba ] = PST( od, do, N, QRSb_shluk, QRSe_shluk, Pbg_shluk, Pend_shluk, Tend_shluk );

disp('Rozměření ukončeno');


     