function nalezeni ()
%% Nalezení vybraného slova z daných databázi
%
%>vysledek< procentuální pravdepodobnost shody udaného slova
%

if exist('1matlab.dat') == 2 


vysledek = 0;
slovo_str = '';
vys_matic = 0;
slovom_str = '';


%% načtení >tolerancí< 
% maximální hodnota, pro kterou budou příznaky nahrávky 
% brány jako shodné 
%

if exist('parametr.mat') == 2
    load('parametr.mat');
    tolerance = dataParam.dataTolerance;
    tol_matic = dataParam.dataTol_matic;
else
    tolerance = 0.2;
    tol_matic = 0.1;
end


                

%% načtení zvukové nahrávky

[soubor, cesta] = uigetfile('*.wav', 'Vyber souboru');


if soubor == 0
  close all;
  diplom_menu();
else


   [signal,Fs] = nacteni_zvuku( soubor, cesta);  %načtení souboru
    
    signal = energie(signal);     
    signal = orezani_sumu(signal);
    signal = preemfaze(signal);
    %signal = pasmova_propust(signal, Fs);
    signal = zesileni(signal)  ;
    
    zvuky = (vzorkovani (signal));
    
    maticeAx = zvuky(2:end,:);


  %% načtení matice A a P
  
  cisloDatab = 1;
  nacData = 1;
  
while nacData == 1;
  jmenoDatab = [num2str(cisloDatab) 'matlab.dat'];
  
if exist(jmenoDatab) == 2
    matice = dlmread(jmenoDatab);
  
    maticeP = matice(1:5,:);
    maticeA = matice(11:34,:);
    maticeM = matice(6:10,:);
    
    
    slovo = char(maticeM);
    slovo_char = [slovo(1,:), slovo(2,:), slovo(3,:), slovo(4,:), slovo(5,:)];
  
    cisloDatab = cisloDatab +1;

else
    nacData = 0;
    break;
end
  
  
  
  %% nahrávka vs. databáze
  
  
  hladiny = stredy (maticeA, maticeAx, maticeP);
  
  hladiny = odskoky(hladiny');
  
  maticePx = pravdepodobnost(hladiny , size(hladiny,1));
 
  sr_matic = [];
  kx =1;
  
  for k = 1:size(maticeP,2)     %srovnání matic přechodů
      index = maticeP(5,k);
      konec = 0;
      while konec ~=1
          if maticePx(5,kx) == index
              if abs(maticeP(1,k) - maticePx(1,kx)) < tol_matic
                  sr_matic(1,k) = 1;
                  konec =1;
              end
          end
              kx = kx + 1;
              if kx > size(maticePx,2)
                  konec = 1;
                  kx =  sum(sr_matic) +1;
                  if kx > size(maticePx,2)
                    kx = size(maticePx,2);
                    
                  end
              end
      end
  end
  
  srovnani = [];
  pravdep = zeros(2,size(maticeP,2));
            
  k=1;
 for kx = 1:size(maticeAx,2)           %srovnání kepster
     if max(abs(maticeA(:,k) - maticeAx(:,kx))) < tolerance
         srovnani(1,kx) = 1;
         pravdep(1,k) = pravdep(1,k) +1; 
     else
         if k+1 < size(maticeP,2)
             if max(abs(maticeA(:,k+1) - maticeAx(:,kx))) < tolerance
                 srovnani(1,kx) = 1;
                 pravdep (1,k) = pravdep (1,k)/(pravdep (1,k)+1);
                 pravdep (2,k) = 1- pravdep(1,k);
                 k = k+1;
             end
         end
     end
     if kx == size(maticeAx,2) 
         pravdep (1,k) = pravdep (1,k)/(pravdep (1,k)+1);
         pravdep (2,k) = 1- pravdep(1,k);
     end                 
  end
  
      uspech = round( (sum(srovnani)/size(maticeAx,2))*10000); 
      uspech = uspech /100;
  
      if uspech > 100
          uspech = 100;
      end
  

  
  if uspech > vysledek      %aktuální výsledek vs. nejlepší (kepstra)
      vysledek = uspech;
      vysledek_str = ['je na ' num2str(uspech) '%'];
      slovo_str = strcat('"', slovo_char, '".');
  elseif uspech == vysledek
      slovo_str = 'nelze jenoznačně určit';
  end
  
      
      us_matic = round( (sum(sr_matic)/size(maticeP,2))*10000); 
      us_matic = us_matic /100;
      
  if us_matic > vys_matic      %aktuální výsledek vs. nejlepší (matice)
      vys_matic = us_matic;
      vysledekm_str = ['je na ' num2str(us_matic) '%'];
      slovom_str = strcat('"', slovo_char, '".');
  elseif us_matic == vys_matic
      slovom_str = 'nelze jenoznačně určit';
  end
      
  
  
 end % pro while načítání databází
 
 %% výpis výsledku
 
 if vysledek == 0 && vys_matic == 0     
         msgbox('Chyba databáze.', 'Chyba', 'error');
 elseif vys_matic > 50
     msgbox ({'Hledané slovo v souboru', soubor , vysledekm_str, ...
         'shodné se slovem', slovom_str, ''}, 'Pravděpodobnostní matice');
 else
     msgbox ({'Hledané slovo v souboru', soubor , vysledek_str, ...
         'shodné se slovem', slovo_str, ''}, 'Kepstrální příznaky');
 end
 
end;   % if soubor

else
    msgbox('Nebyla nalezena žádná databáze.', 'Chyba', 'error');

end;  % if exist

end
