function [ kolisani, vysledek ] = filtr_izo( polohy_R, hodnoty_R, data )
%FILTR_IZO Vyhledá křivku kolísání izolinie a odečte ji od signálu

%--------------------------------------------------------------------------
% detekce oblasti mezi vlnami P a Q, interpolace, odecteni driftu
%--------------------------------------------------------------------------
ulozeni_R=polohy_R;

for lead=2:4
polohy_R=ulozeni_R;
signal = data; 
fvz = 500;                            % vzorkovaci frekvence
signal = signal(:,lead);         % vybereme svod
l = length (signal); 

size_signal = size(signal);
if size_signal(1)>=size_signal(2)       
    signal=signal';                    % transformace signálu
end


    if lead==2
        polohy_R=polohy_R.I;
        hodnoty_R=hodnoty_R.I;
    elseif lead==3
        polohy_R=polohy_R.III;
    else
        polohy_R=polohy_R.II;
    end
    


mediany=[];         % sem budeme ukladat hodnoty medianu z detekovanych PQ intervalu
polohy_medianu=[];  % sem budeme ukladat polohy medianu na ose x (prostredek kazdeho PQ intervalu)

% for cyklus s oknem delky 15 zacinajicim 35 vzorku a koncici 12 pred kazdym kmitem R
for i=1:(length(polohy_R))
    if polohy_R(i)>35
        pom1=((polohy_R(i)-35):(polohy_R(i)-12)); % polohy_R bodu na kazde izolinii (na ose x)
        pom2=(signal((polohy_R(i)-35):(polohy_R(i)-12))); % hodnoty bodu na kazde izolinii (na ose y)
        mediany(i) = median(pom2); % vybere median ze vzorku na kazde izolinii (osa y)
        polohy_medianu(i) = median(pom1);    % vybere stred kazdeho okna (osa x)
        if i>1
        if polohy_medianu(i)==polohy_medianu(i-1)
            polohy_medianu(i)=polohy_medianu(i)+0.00001;
        end
        end
    end
end



% nalezeni driftu a odecteni od vstupniho signalu
kolisani=interp1(polohy_medianu,mediany,([1:l]),'cubic'); % interpolace kubickym splinem nalezenymi body
vysledek= (signal-kolisani); % odecteni driftu od zaruseneho signalu

% uložení výsledků
if lead==2
    polohy_medianu_I=polohy_medianu;
    mediany_I=mediany;
    kolisani_I=kolisani;
    vysledek_I=vysledek;
elseif lead==3
    polohy_medianu_III=polohy_medianu;
    mediany_III=mediany;
    kolisani_III=kolisani;
    vysledek_III=vysledek;
else
    polohy_medianu_II=polohy_medianu;
    mediany_II=mediany;
    kolisani_II=kolisani;
    vysledek_II=vysledek;
end

end

polohy_medianu = struct('I',polohy_medianu_I,'II',polohy_medianu_II,'III',polohy_medianu_III);
mediany = struct('I',mediany_I,'II',mediany_II,'III',mediany_III);
kolisani = struct('I',kolisani_I,'II',kolisani_II,'III',kolisani_III);
vysledek = struct('I',vysledek_I,'II',vysledek_II,'III',vysledek_III);


end

