function [ E ] = kriterium( data_meas, data_sim, kritname)
%UNTITLED Summary of this function goes here
%   Detailed explanation goes here
    if (size(data_meas) ~= size(data_sim))

        E = 1e100;
        return
    else
        E = 0;
    end
    
[~, datasize] = size(data_meas);

vaha = zeros(datasize, 1);
vaha(1) = 0;
vaha(2) = 1;
vaha(3) = 0;
vaha(5) = 0;
vaha(6) = 0;
vaha(8) = 0;
    for i = 1:datasize
        if isempty(find(data_meas(:, i), 1))||isempty(find(data_sim(:, i), 1))

        else
            if strcmp(kritname, 'kvadr')
                E = E + vaha(i).*sum((data_meas(:, i) - data_sim(:, i)).^2);
            end
            
            if strcmp(kritname, 'itae')
                E = E + vaha(i).*sum(abs((data_meas(:, i) - data_sim(:, i))).*linspace(0, 100, length(data_sim))');
            end
            
            if strcmp(kritname, 'step')
                
                %	step up
                if (vaha(i)*(data_meas(1, i) - data_sim(1, i))) > 0
                    i_norm = find((data_meas(:, i) - data_sim(:, i)) >= -0.05);
                    i_prekmit = find((data_meas(:, i) - data_sim(:, i)) < -0.05);
                end
                %	step down
                if (vaha(i)*(data_meas(1, i) - data_sim(1, i))) <= 0
                    i_norm = find((data_meas(:, i) - data_sim(:, i)) < 0.05);
                    i_prekmit = find((data_meas(:, i) - data_sim(:, i)) >= 0.05);
                end
                E = E + vaha(i).*(sum((data_meas(i_norm, i) - data_sim(i_norm, i)).^2) + sum(10000.*(data_meas(i_prekmit, i) - data_sim(i_prekmit, i)).^2));
                
            end
        end

    end
    
%   normalizace kriteria
E = E * (data_meas(2, 1) - data_meas(1, 1));    % vynasobano periodou vzorkovani
E = E / data_meas(end, 1);  %   podeleno delkou mereni
E = E / datasize;  %   podeleno poctem krivek
end

