%-----------------------------------------------------------
% Carlos Cabral 2003 - Dep.UA

%calculo do metodo do gradiente e ciclo de identificaçao de features 
%----------------------------------------------------------

function [feature_pontos, i2]=GRADMETHOD_IDEMFEATURES(data)

    % ----------------------calculo do gradiente entre duas medidas consecutivas----------------
    for i1=1:360
        grad(i1)=data(i1)-data(i1+1);
    end 
    grad1=grad;
    grad(find(abs(grad) < 250))= 0;  % filtragem dos dados
    index_pos=find(grad > 0);
    %-------------------------------------------------------------------------------------------
    
    clear feature feature_pontos
    num_pontos=50; %definiçao da largura maxima dos objectos a identificar
    i2=1;
    %-------ciclo para identificaçao de features (a seguir a um gradiente positivo tem de vir um negativo)-------
    for i3=1:length(index_pos)
        temp=index_pos(i3)+num_pontos+1;
        if temp > 360
            temp=360;
        end
        for i4=index_pos(i3)+1:temp
            if grad(i4) < 0
                feature(i2,:)=[index_pos(i3) i4]; % matriz que representa na 1ª coluna o inicio e na 2ª coluna o fim de uma feature
                feature_pontos(i2,:)=[feature(i2,1)+1 feature(i2,2)]; %pq o objecto começa no ponto a seguir ao gradiente positivo e acaba no ponto antes do gradiente negativo  
                i2=i2+1;
                break
            else
                if grad(i4) > 0
                    break
                end
            end
        end
    end
    % para quando nao e detectado nenhum pilar
    if i2==1;
        feature_pontos=NaN;
    end
    %------------------------------------------------------------------------------------------------------------
    