
%==================== KOMBINOVANÝ DETEKTOR ====================

 function [t, A, C_s, B_s] = komb(signal, fvz, vlna, C_k, C_p)


%_______________ PARAMETRY _______________

A = signal;             % signál
n = length(A);          % délka signálu
tvz = 1/fvz;
t = [tvz:tvz:n*tvz];    % časová osa

m = length(vlna);       % délka úseku

[r_C_k, s_C_k] = size(C_k);
[r_C_p, s_C_p] = size(C_p);
 
 shoda = [];
 
 % procházím obě matice a hledám stejné hodnoty poloh
 for shoda_i_p = 1:r_C_p
     for shoda_j_p = 1:s_C_p
         for shoda_i_k = 1:r_C_k
             for shoda_j_k = 1:s_C_k
                 
                 if s_C_k>=s_C_p    % pokud má matice C_k více řádků, přiřazuji hodnoty z ní
                     
                     if C_k(shoda_i_k, shoda_j_k)==C_p(shoda_i_p, shoda_j_p)
                         shoda(shoda_i_k, shoda_j_k) = C_k(shoda_i_k, shoda_j_k);
                     else
                         shoda = [shoda];
                     end
                     
                 elseif s_C_p>=s_C_k
                     
                     if C_p(shoda_i_p, shoda_j_p)==C_k(shoda_i_k, shoda_j_k)
                         shoda(shoda_i_p, shoda_j_p) = C_p(shoda_i_p, shoda_j_p);
                     else
                         shoda = [shoda];
                     end
                 end
             end
         end
     end
 end
 
 shoda = shoda';
 
 

 % vybírám maximální hodnotu z každého sloupce matice shody, která určí
 % konec hledaného grafoelementu

 [r_shoda, s_shoda] = size(shoda);
 shoda2 = [];
 
 
 for AA = 1:s_shoda
     shoda21 = max(shoda(:, AA));
     shoda2 = [shoda2 shoda21];
 end
 
 
 % ve vektoru shoda2 se mohou objevit nuly, které v tomto kroku odstraním a
 % dál pracuji pouze s kladnými hodnotami
 
 shoda3 = [];
 
 for BB = 1:length(shoda2)
     if shoda2(BB) > 0
         shoda31 = shoda2(BB);
         shoda3 = [shoda3 shoda31];
         BB = BB+1;
     else
         BB = BB+1;
     end
 end

 
% přiřadím hodnoty a pozice pro zobrazení v grafu

B_s = [];

for v_s = 1:length(shoda3)
    
    hod_s(v_s) = shoda3(v_s);      % beru hodnotu, ve které grafoelement začíná
    B1_s = A(hod_s(v_s)-m+1:hod_s(v_s));      % a od ní vezmu dalších m-1 hodnot - délka grafoelementu
    B_s = [B_s, B1_s];                % uložení do matice
    
end

% uložení poloh jendotlivých prvků, které mají být detekovány

G = [1:n];      % vektor poloh, ze ktrého vybíráme
C_s = [];

for w_s = 1:length(shoda3)
    
    s_s(w_s) = shoda3(w_s);
    C1_s = G(s_s(w_s)-m+1:s_s(w_s));
    C_s = [C_s; C1_s];
    
end
 
