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=11;  
% Délka okna
okno=128;
%Práh detekce (prah = (prah_zadany * maximum diference) - zadejte
%prah_zadany)
prah_zadany=0.1;


%------------------------Načtení signálu-----------------------------------
[vystup1,sampling]=filter_eeg_signal1(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);
% Příprava proměnné frekvence
frekvence1=zeros(1,delka);
frekvence2=zeros(1,delka);


%----------------------Výpočet diference-----------------------------------
for i=1:delka-2*okno
    okno1=kanal(i:i+okno-1);        %Načtení oken
    okno2=kanal(i+okno:i+okno*2);
    
    amplituda1(i)=sum(abs(okno1));  %Výpočet střední amplitudy
    amplituda2(i)=sum(abs(okno2));
    
    
    for k=2:okno
    frekvence1(i)=frekvence1(i)+(abs(okno1(k) - okno1(k-1))); %Výpočet střední frekvence
    frekvence2(i)=frekvence2(i)+(abs(okno2(k) - okno2(k-1)));
    end
    
    
    diference(i)=abs(amplituda1(i)-amplituda2(i))*abs(7*(frekvence1(i)-frekvence2(i))); %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, % jestlize najdeme hodnotu nad prahem
    
        kus = diference(index-delka_okna:index+delka_okna);   % tak najdi maximum... 
        [hodnota,poloha] = max( kus );      % ...v nasledujicim bloku signalu
        polohy = [polohy, (index-delka_okna)+poloha];    % uloz polohu maxima
        index = index + delka_okna;         % zvys index o delku okna
        
    else % pokud nenajdes hodnotu nad prahem, tak zvys index o 1

        index = index + 1;
        
    end
    
end
    

%----------------------vykreslení------------------------------------------
figure(2);
subplot(3,1,1);
plot(linspace(0,delka/fvz,delka),kanal);
% plot();
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]')



