% EDA

h=fir1(51,5/250,'low'); % filtrace DP, mezni frekvence 5 Hz, vyhlazeni signalu 
EDAf=filtfilt(h,1,eda); % zpětná a dopředná filtrace

prodlouzenyEDAf=[EDAf(1:2500) EDAf EDAf(end-2499:end)];   % prodlouzeni EDA z obou stran o 2500 vzorku, opakovanim zacatku a konce, prodlouzeni kvuli vypoctu ve for cyklu

for i=2501:length(prodlouzenyEDAf)-2500                   % projeti prodlouzenyEDAf od vzroku 2500 do vzorku end-2500, odpovida to tedy normalnimu EDA 
    minimum(i-2500)=min(prodlouzenyEDAf(i-2500:i+2499));  % vypocet driftu signalu, vezme se okno delky 5000 vzorku a projizdi se signalem, z tech 5000 hodnot se vezme minimalni hodnota, ta je urcena jako drift pro prislusny vzorek   
end
EDA0=EDAf-minimum;      % odecteni driftu od EDA filtrovany
%Kód výše je použitím a úpravou: 
%BUBNÍK, K.; KOLÁŘOVÁ, J., Software pro zpracování a filtraci PPG signálu, Brno: FEKT VUT v Brně 2012. Dostupné z WWW: http://www.dbme.feec.vutbr.cz/vyzkum-a-vyvoj/produkty

EDA1=[EDA0(1:250) EDA0 EDA0(end-249:end)];
gauss=gausswin(500); %vytvoření gaussova okna
gauss=gauss/sum(gauss); %normalizace
EDAv=conv(EDA1, gauss); % vyhlazení signálu konvolucí s gaussovým oknem
EDAv=EDAv(500:end-500); %výsledná EDA

%DETEKCE IMPULSŮ ODPOVÍDAJÍCÍ OBRÁZKŮM PREZENTACE
detekce1=diff(detekce);
detekce2=zeros(1,7); %Výpočet diference pro určení poloh stimulačních impulsů
j=1;
for i=2:length(detekce1) %cyklus pro nalezení stimulačních impulsů
    if detekce1(i-1)+detekce1(i)>4900 && detekce1(i-1)+detekce1(i)<5100 %podmínky detekce
        detekce2(j)=detekce(i-1); %zapsání polohy
        j=j+1; %počitadlo detekce
        
    end
end
detekce2(3)=detekce2(3)-2000; %opravení chyby v detekci

startscr=zeros(1,7); %proměnná pro zápis polohy začátku SCR
maxscr=zeros(1,7); %proměnná pro zápis polohy maxima SCR
start=zeros(1,7); %hodnota vodivost v začátku SCR
peak=zeros(1,7); %Hodnota vodivosti v maximu SCR
k=1;
for i=1:7
    [start(i),startscr(i)]=min(EDAv(impuls(i):impuls(i)+1500)); %hledání hodnoty a polohy začátku SCR jako minima v úseku 3s po impulsu
    startscr(i)=impuls(i)+startscr(i); %zapsání polohy
    [peak(i),maxscr(i)]=max(EDAv(startscr(i):startscr(i)+2000)); %hledání hodnoty a polohy maxima SCR jako maxima v úseku 4s po začátku SCR
    maxscr(i)=startscr(i)+maxscr(i); %zapsání polohy 
end
    rozdil10=peak-start; %rozdíl začátku a maxima
%     casy=(maxscr-startscr)/Fs;
