% funkce pro výpočet koeficientů
function [results_ielf, results_ielf_mod, results_corr] = mainFunc...
         (file_path_1, file_path_2, bands, handles)

colours = ['b' 'g' 'y' 'r' 'c' 'm'];

% stanovení počtu frekvenčních pásem
band_count = size(bands,1);

% načtení průběhů
[x_axis_1, data_1, ~] = dataRead(file_path_1);
[x_axis_2, data_2, ~] = dataRead(file_path_2);

% interpolace vstupních dat
[x_axis_final, data_1_final, data_2_final, len_final] =...
    interpolation(x_axis_1, x_axis_2, data_1, data_2);

if (x_axis_final == 0)
    return;
end

% vykreslení průběhů do druhého grafu
semilogx(x_axis_final,data_1_final,'r','LineWidth',2);
xlim([x_axis_final(1) x_axis_final(end)]);
xlabel('Frequency axis [Hz]');
ylabel('datapoint values');
hold on
plot(x_axis_final,data_2_final,'k','LineWidth',2);

lower_index = 1;
upper_index = len_final;

% výpočet koeficientů pro celé frekvenční pásma
results_ielf(1,1) = ielfCalc(lower_index, upper_index, len_final,...
    data_1_final, data_2_final, x_axis_final);
results_ielf_mod(1,1) = ielfModCalc(lower_index, upper_index, len_final,...
    data_1_final, data_2_final, x_axis_final);
results_corr(1,1) = corrCalc(len_final, data_1_final, data_2_final);

% cyklus pro výpočet koeficientů pro jednotlivá frekvenční pásma
for I = 2:band_count+1
    
    % načtení mezí pro právě počítané pásma
    lower_lim = bands(I-1,1);
    upper_lim = bands(I-1,2);
    
    % kontrola právě počítaného rozsahu
    [passed, err, lower_lim, upper_lim] = bandCheck...
    (lower_lim, upper_lim, x_axis_final, I);
    
    % výpis případných chybových hlášek
    switch err
        case 1
            messege = sprintf...
('frequency band no.%d error: band limits are equal, can''t be calculated',I-1);
            addToLog(messege,handles);
            
        case 2
            messege = sprintf...
('frequency band no.%d error: band limits are both above or bellow common frequency band of input graphs, can''t be calculated',I-1);
            addToLog(messege,handles);
    end
    
    [~, lower_index] = min(abs(x_axis_final-lower_lim));
    [~, upper_index] = min(abs(x_axis_final-upper_lim));
    
    if ((lower_index == upper_index) && err == 0)
        messege = sprintf...
('frequency band no.%d error: band limits are to close to each other for a given frequency sampling rate, can''t be calculated',I-1);
        disp(messege);
        addToLog(messege,handles);
        passed = 0;
    end
    
    % funkce pro vykreslení mezí frekvenčního pásma
    [lower_x, upper_x, lower_y, upper_y] = bandLimits...
    (x_axis_final, lower_index, upper_index, data_1_final, data_2_final);
    
    plot(lower_x,lower_y,colours(I-1),'LineWidth',2);
    plot(upper_x,upper_y,colours(I-1),'LineWidth',2);
    
    % uložení výsledků do příslušných polí
    if (passed == 0)
        results_ielf(I,1) = NaN;
        results_ielf_mod(I,1) = NaN;
        results_corr(I,1) = NaN;
    else
        results_ielf(I,1) = ielfCalc(lower_index, upper_index, len_final,...
            data_1_final, data_2_final, x_axis_final);
        results_ielf_mod(I,1) = ielfModCalc(lower_index, upper_index, len_final,...
            data_1_final, data_2_final, x_axis_final);
        results_corr(I,1) = corrCalc(len_final, data_1_final, data_2_final);
    end
    
end

end