clear all
close all
clc


%------------------------Uživatelské zadání dat----------------------------
%Výběr kanálu 
%Elektrody={'Fp1';'Fp2';'F7';'F3';'Fz';'F4';'F8';'T3';'C3';'Cz';'C4';'T4';'T5';'P3';'Pz';'P4';'T6';'O1';'O2';'A1';'A2';};
y=17;  
% Délka okna 
okno=128;
%Práh detekce 
prah_zadany=8e13;


%------------------------Načtení signálu-----------------------------------
[vystup1,chans,sampling,sens,chann,id,pr,jm,date,time]=filter_eeg(y);
kanal=vystup1;


%-----------------------Deklarace proměnných-------------------------------
% Vzorkovací frekvence
fvz=sampling;
%Reálné polohy segmentů
real_polohy=[992,5312,9600,13856,17968,19920,20032,24384,28384,33328];
% Délka signálu
delka=length(kanal);

%----------------------Výpočet diference-----------------------------------
i=1; %Začátek referenčního okna
k=2+okno; %Začátek testovacího okna
while i<(delka-okno)&&k<(delka-okno)
    ref=kanal(i:i+okno);    %Vybrání hodnot referenčního okna
    kor_ref=xcorr(ref);     %Výpočet autokorelace
    test=kanal(k:k+okno);   %Vybrání hodnot testovacího okna
    kor_test=xcorr(test);   %Výpočet autokorelace
    
    %Diference
    diference(k)=abs(sum((kor_ref-kor_test).^2));
    
    if diference(k) > prah_zadany  %Aplikace prahu
        znacka(k)=4e10;
        i=k;                    %Posunutí referenčního okna
        k=i+okno+1;             %Posunutí testovacího okna
    else
        k=k+1;                  %Posunutí testovacího okna
    end
    
    
    
end

%----------------------Aplikace prahu a určení lokálního maxima------------
N = length( diference );   
polohy = [];   
okno=okno+872;
index = okno+2;  
while index<N-okno

    if diference(index)>prah_zadany % Aplikace prahu
    
    
        kus = diference(index-okno:index+okno);   % Načtení části signálu pro nalezení maxima 
        [hodnota,poloha] = max( kus );      % Nalezení maxima
        polohy = [polohy, (index-okno)+poloha];    % Uložení polohy maxima
        index = index + okno;         % Posunutí o délku okna
        
    else 
        
        index = index + 1;
        
    end
    
end


%----------------------Vykreslení------------------------------------------
figure(2);
subplot(3,1,1);
plot(linspace(0,delka/fvz,delka),kanal);
hold on;
stem( real_polohy/fvz, 400*ones(1,length(real_polohy)), 'r' );
hold off;
title('Původní signál s reálnými segmenty');
xlabel('Čas [s]')
ylabel('Amplituda [uV]')
hold on;
subplot(3,1,2);
plot(linspace(0,N/fvz,N),diference);
title('Míra diference');
xlabel('Čas [s]')
ylabel('Diference ')
hold on;
plot(1:delka/fvz,prah_zadany,'k')
subplot(3,1,3);
plot( linspace(0,delka/fvz,delka),kanal);
hold on;
stem( polohy/fvz, 400*ones(1,length(polohy)), 'k' );
hold on;
stem( real_polohy/fvz, 400*ones(1,length(real_polohy)), 'r' );
hold off;
title('Detekované segmenty EEG')
xlabel('Čas [s]')
ylabel('Amplituda [uV]')


