%Funkcja pobiera zbior wszystkich wykrytych w sygnale deceleracji (pobierana zmienna A) i
%oczyszcza go z anotacji "niepewnych". Za pewne uznajemy tylko takie
%anotacje, ktore posiadaja z obu stron sasiadow znajdujacych sie w
%fizjologicznie mozliwych granicach (fizjologicznych granicach trwania odstepu RR).


function [ANNour] = removeOutliers(A,sfreq) %dostajemy dobre anotacje, czyli szkielet, powstaly po oczyszczeniu zbioru wszystkich deceleracji A

%     lowZakresMODA=0.3*sfreq;           % dolna fizjologiczna granica trwania RR - 0.3 s (tu przeliczona od razu na liczbe probek)
%     upZakresMODA=3*sfreq;            % gorna fizjologiczna granica trwania RR - 3 s (tu przeliczona od razu na liczbe probek)
        lowZakresMODA=0.2*sfreq;       
        upZakresMODA=12*sfreq;  
        ANNour = A;
        dANNour =[diff(A);1*sfreq];
        dANNourmoved = [1*sfreq;diff(A)];

    
%     ANNour = A;
%         dANNour =[diff(A);1];
%         dANNourmoved = [1;diff(A)];
        
        if(size(dANNour,1)>1)
            
%             ANNour(((dANNour > upZakresMODA) | (dANNour < lowZakresMODA)) | ((dANNourmoved > upZakresMODA) | (dANNourmoved < lowZakresMODA) )) = [];
                ANNour(( (dANNour < lowZakresMODA)) | ( (dANNourmoved < lowZakresMODA) )) = [];
        end
        
        
%         ANNour = A; %wstepne wpisanie listy wszystkich deceleracji w miejsce ostatecznych anotacji
%         dANNour =diff(A); %liste anotacji zamianiamy na liste interwalow RR
%         if(size(dANNour,1)>1) %obsluga bledu za krotkiej tablicy interwalow RR
%             for iterS=2:size(dANNour,1) %przechodzimy po wszystkich interwalach RR
%                 %XXXX zacina sie przy dlugosci = 1
%                 if dANNour(iterS) < upZakresMODA && dANNour(iterS) > lowZakresMODA &&... %jesli aktualny i poprzedni interwal RR miesci sie w fizjologicznych granicach, to zostaw go w swietym spokoju
%                    dANNour(iterS-1) < upZakresMODA && dANNour(iterS-1) > lowZakresMODA
%                 else
%                     ANNour(iterS)=999999; %jesli aktualny lub poprzedni RR nie miesci sie w fizjologicznych granicach, to oznacz dziewiatkami srodkowa anotacje (!). 
%                     %Uwaga: warunki sprawdzamy na interwalach RR (dANNour),
%                     %ale odrzucamy z listy anotacji (ANNour).
%                 end
%             end
%         end
        ANNour(ANNour==999999)=[]; %czyscimy dziewiatki
        ANNour = sort(ANNour); %sortowanie anotacji na wszelki wypadek ;) (do usuniecia raczej)
end