%{ 
    loadECG.m
    Krystof Sara <xsarak00@stud.feec.vutbr.cz> 2019-2020

    Funkce pro nacteni a zpracovani EKG zaznamu. Vyuziva funkce edfread,
    ktera je dodavana spolu se zaznamnikem Bittium Faros.
%}

function [ ui ] = loadECG( file, ui )

% EKG zaznam
[~, data] = edfread(file);
ecg = data(1, :);
fvz_ecg = 1000; %Hz
plot(ecg, 'Parent', ui.plots(3));
hold(ui.plots(3), 'on')

%% QRS detektor

% Filtrace a predzpracovani

% FIR PP
b = fir1(301, [11/(fvz_ecg/2) 21/(fvz_ecg/2)], 'bandpass');
fil_sig = filtfilt(b, 1, ecg); 

% Umocneni signalu
pow_sig = fil_sig.^2;

% FIR DP pro vyhlazeni
b2 = fir1(101, 3/(fvz_ecg/2), 'low');
smooth_sig = filtfilt(b2, 1, pow_sig);

%% Peaky

hold(ui.plots(3), 'on')
[~, pos_R] = findpeaks(smooth_sig, 'MinPeakHeight', 30000);
scatter(pos_R, ecg(pos_R), 'Parent', ui.plots(3));

%% Intervalova funkce

roz = diff(pos_R);
ui.ecg_hr = (1./(roz/fvz_ecg)).*60;

% Prepinani mezi prumernou a medianovou vyslednou hodnotou TF (ABSE x ABCE)
if ui.show_average
    ui.ecg_hr_value = round(mean(ui.ecg_hr(:)));
else
    ui.ecg_hr_value = round(median(ui.ecg_hr(:)));
end

set(ui.text(2), 'String', sprintf('EKG TF\n  %.0f', ui.ecg_hr_value));
set(ui.text(2), 'Visible', 'on');

% Debugovaci cast
if ui.debug_ecg
    figure;
    plot(ecg)
    hold on
    scatter(pos_R, ecg(pos_R));
    xlabel('Vzorky [-]')
    ylabel('Napeti [\muV]')
end

end

