function [edgeindexmat] = DetectEdges(data, scale, width ,threshold );
%funkcia vracia maticu indexov hran vektor dat edgeindexmat
%scale urcuje mierku gaussianoveho filtra a sliding window pri hladani
%lokalnych extremov
% threshold je prah pri hladani lokalnych extremov
% width paramater gauss jadra

g= KernelGaussian1deriv(scale,width ); %vytvorenie gaussianovho jadra danej velkosti
                                    %a sirky

%vyplnenie okrajov s velkostou g na zaciatku a konci
 padData = [data(1)*ones(length(g),1); data; data(end)*ones(length(g),1)];  
 fData = conv(padData, g);                                                 
 
 offset = (length(fData) - length(data)) / 2;
 fData = fData(offset:offset+length(data)-1); %odstraneny padding
 %konvolucia fData zvacsila
 
 %ziskam extremy
 [ extrema] = FindLocalExtrema( fData, threshold, scale ) 
 edgeindexmat=find(extrema); %vrati indexy nenulovych prvkov
                                %maticu indexov hran
    
%generovanie znaciek s vyskou max(data)
markdata = 1.0 * extrema *max(data);

%generovanie znaciek pre konv. signal
markdata2 = 1.0 * extrema *max(fData);


                                
                                
                                
                                
%vykreslenie znaciek v konvoluvovanom signale
figure('Name','hrany po konvolucii');
plot(fData);
hold on;
plot(markdata2, 'r');
hold off;

%vykreslenie znaciek v povodnom signale
 figure('Name','hrany')
 plot(data)
 hold on;
 plot(markdata, 'r');
 hold off;