%% max_min_nul.m
% Urceni maxim, minim a nulovych bodu prutokove krivky

function [polohy_max_prutok, polohy_nul_prutok, poc_dech] = max_min_nul(prutok)

[polohy_max_prutok] = maxsign(prutok); % Urceni maxim
[polohy_min_prutok, hodnoty_min_prutok, count_min] = minsign(prutok); % Urceni minim
[polohy_nul_prutok] = nul_body(prutok); % Urceni nulovych bodu

if polohy_min_prutok(1) < polohy_max_prutok(1) % Pokud je poloha prvniho minima mensi nez poloha prvniho maxima ...
    polohy_min_prutok = polohy_min_prutok(2:end); % ... Polohy minim jsou pocitany od druhe pozice
    hodnoty_min_prutok = hodnoty_min_prutok(2:end); %  ... Hodnoty minim jsou pocitany od druhe pozice
end

poc_dech=0; % Pocet klidovych dechu
ind=1; % Pomocna promenna

while ind < count_min % Dokud je pomocna promenna mensi nez pocet detekovanych minim
    if abs(hodnoty_min_prutok(ind+1)) > abs(hodnoty_min_prutok(ind)*2); % Pokud je nasledujici minimum 2x vetsi, jedna se o maximalni vydech
        poc_dech = ind; % Urceni poctu klidovych dechu (pred usilovnym manevrem)
        break % Ukonci cyklus
    end
    ind=ind+1; % Jinak zvetsi pomocnou promennou o 1
end

if poc_dech == 0 % Pokud je pocet dechu urcen jako 0 ...
    if abs(hodnoty_min_prutok(6)) > abs(hodnoty_min_prutok(5)*1.3); % Zamereni na rozdil 5. a 6. vydechu (dle zadani v protokolu)
        poc_dech = 5; % Urceni poctu klidovych dechu
    end
end

if poc_dech == 0 % Pokud i tak neni urcen pocet dechu
     msgbox('Nedostatečný usilovný výdech, proveďte znovu měření.') % Vypsat hlasku o nedostatecnem maximalnim vydechu
end


