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=0.05;


%------------------------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 pomocí FFT-----------------------
for i=1:delka-2*okno
    okno1=kanal(i:i+okno);          %Načtení oken
    okno2=kanal(i+okno:i+okno*2);
    
    okno1_fft=fft(okno1);           %Výpočet FFT
    okno2_fft=fft(okno2);
    okno1_fft=abs(okno1_fft);
    okno2_fft=abs(okno2_fft);
    
    
    diference(i)=(max((1/2)*((okno1_fft./okno2_fft)+(okno2_fft./okno1_fft))-1)); %Výpočet diference
    
  
    
end



%----------------------Aplikace prahu a určení lokálního maxima------------
N = length( diference );   
prah = prah_zadany*max(diference);
x=1000;                     % delka okna pro hledani maxima
index = 1+x;          
polohy = [];        
delka_okna = x;    
while index<N-delka_okna

    if diference(index)>prah, % Aplikace prahu
    
        kus = diference(index-delka_okna:index+delka_okna);   % Načtení části signálu pro nalezení maxima
        [hodnota,poloha] = max( kus );      % Nalezení maxima
        polohy = [polohy, (index-delka_okna)+poloha];    % Uložení polohy maxima
        index = index + delka_okna;         % 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,'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]')



