%% korekce.m
% Korekce driftu signalu

function [prutok_kor, objem_kor, polohy_nul_prutok, poc_dech] = korekce(prutok)

[polohy_max_prutok, polohy_nul_prutok_temp, poc_dech] = max_min_nul(prutok); % Funkce pro detekci maxim, minim a nulovych bodu v signalu

if polohy_max_prutok(1) < polohy_nul_prutok_temp(1) % Osetreni, aby 1. maximum (nadech) bylo po nulovem bodu
    poc_dech = poc_dech-1; % Snizeni poctu klidovych dechu o jeden
end

if polohy_max_prutok(1) > polohy_nul_prutok_temp(2) % Osetreni, aby signal zacinal nadechem (pokud je 1. maximum az po dvou nul. bodech -> signal zacina vydechem
    polohy_nul_prutok_temp = polohy_nul_prutok_temp(2:end); % Odstraneni prvniho nuloveho bodu
end


prutok_temp = prutok(polohy_nul_prutok_temp(1):polohy_nul_prutok_temp(poc_dech*2+1)); % Signal prutoku o delce klidovych dechovych cyklu
prumer = mean(prutok_temp); % Urceni prumerne hodnoty z tohoto useku
prutok_kor = prutok(polohy_nul_prutok_temp(1):end) - prumer; % Odecteni prumerne hodnoty od vsech hodnot signalu prutoku
polohy_nul_prutok = nul_body(prutok_kor); % Urceni nulovych bodu v novem korigovanem signalu
objem_temp = cumsum(prutok_kor)/100; % Integrace signalu
objem_kor = objem_temp; % Ulozeni do nove promenne
    if prutok_kor(1)>0 % Pokud prvni prvek noveho signalu je vetsi nez nula (neuplny nadech)
        prutok_kor = prutok_kor(polohy_nul_prutok(2):end); % Korekce signalu prutoku
        objem_kor = objem_kor(polohy_nul_prutok(2):end); % Korekce signalu objemu
        polohy_nul_prutok = polohy_nul_prutok(2:end)-polohy_nul_prutok(2); % Korekce nulovych bodu
        poc_dech = poc_dech-1; % Snizeni poctu dechu o jeden
    end