function vypocet()   % definice funkce pro výsledný výpočet tříd

%definice globálních proměnných
global wavelength_number
global intenzity
global classes
global plochy
classes=cell(6,1);


% hledání mezních hodnot pro intervaly vlnových délek 
data=zeros(6,3);            % definice matice pro uložení mezních dat ve formátu
                                        %   || pozice | wavelength | intenzita||
h=400;                            % počáteční hledaná vlnová délka je 400 nm


% algoritmus pro nalezení pozic 400, 500, 600, 700, 800, 900 nm 
for m=1:6
                                                                                           
i=1;
n=1;
%dif_1=0;
%dif_2=0;
pozice=0;

        while (n==1)                                                   
           dif_1=h-wavelength_number(i,1);          % odečtení hledaného čísla od prvního čísla
            i=i+1;
            if (i==length(wavelength_number))       %koncové opatření
                pozice=i;
                 n=2;   
            end

           dif_2=h-wavelength_number(i,1);            %odečtení hledaného čísla od druhého
           if abs(dif_2)>(dif_1)                                   %porovnání, jestli je druhý rozdíl větší než první
                 pozice=i-1;                                            %pokud ano, předchozí číslo bylo blíže hledanému, jinak se opakuje    
                 n=2;                                                       %ukončení cyklu while
           end    

        end    
    
    data(m,1)=pozice;                                               % zápis pozice
    data(m,2)=wavelength_number(pozice,1);       % zápis vlnové délky
    data(m,3)=intenzity(pozice);                               % zápis intenzity
    
    h=h+100;     % inkrementace hledané vlnové délky 400-900 nm
    
end



% %%%%%%%%%_______Výpočet procentuálního zastoupení________%%%%%%%%%%%%%%%

% výpočet celkové plochy grafu
celk_plocha=trapz(wavelength_number((data(1,1)):(length(wavelength_number))),intenzity((data(1,1)):(length(wavelength_number))));     
plochy=zeros(5,2);              %definice matice pro ukládání vypočtených ploch a procentuálního zastoupení || plocha | procenta ||

for m=1:5
    
 %  Výpočet ploch v jednotlivých intervalech a jejich procentuální zastoupení
plochy(m,1)=trapz(wavelength_number((data(m,1)):(data((m+1),1))),intenzity(data(m,1):data(m+1,1)));
plochy(m,2)=plochy(m,1)/(celk_plocha/100);

end


%%%%%%%%%%______algoritmus pro vyhodnocení tříd______%%%%%%%%%%%%%%%%%%%%%%% 

AM1_5=[18.4; 19.9; 18.4; 14.9; 12.5; 15.9];             % definice referenčního spektra AM1.5
limits=[0.75 1.25; 0.5 2.0; 0.4 2.0 ];                            % limity pro určení tříd       

% algoritmus postupně porovnáva shodu všechn intervalů se spektrem AM1.5 
for i=1:5;

    if    (plochy(i,2) >=limits(1,1)*AM1_5(i,1)) && (plochy(i,2)<=  limits(1,2)*AM1_5(i,1))             %třída A
          classes{i}='Třída A';  
    else

        if    (plochy(i,2) >=limits(2,1)*AM1_5(i,1)) && (plochy(i,2)<=  limits(2,2)*AM1_5(i,1))              %třída B
               classes{i}='Třída B';  
        else

            if    (plochy(i,2) >=limits(3,1)*AM1_5(i,1)) && (plochy(i,2)<=  limits(3,2)*AM1_5(i,1))              %třída C
                  classes{i}='Třída C';  
            else     
                classes{i}='Neshoda';      % neshoduje se s žádnou třídou

            end  
        end  
    end 

end