% Detector de discontinuidades para funciones con ruido.
% Basaso en el grado de la reconstruccion AP en el que tomamos un stencil de longitud creciente
%   capdetecamcsc_u(x,f,grau,factor)
%   Entradas:
%      x = nodos iniciales
%      f = f(x)
%      grau = grado del polinomio AP
%      factor = determina la magnitud de las discontinuidades consideradas
%   Salidas:
%      plot de las discontinuidades (linea vertical con ^)
%
% Autor: José Jaime Noguera.   +INFO: www.uv.es/anims/noguera

function capdetecamcsc_u(x,f,grau,factor)
[mx,nx]=size(x);

hold on
inicio=1;
i=10;

while i<nx-1
         coefi=qk(x(inicio:i),f(inicio:i),grau);
         [nc,mc]=size(coefi);
         coefi1=coefi(nc:-1:1);
         solu1(inicio:i)=polyval(coefi1,x(inicio:i));
         suma=0;
         for j=inicio:i
            suma=suma+(solu1(j)-f(j))^2;
         end
         error(i)=suma;
         if (i>inicio)
            errmed(i)=abs(error(i)-error(i-1));
         end  

         if (i>10 && i~=inicio+11 && i~=inicio+10 && errmed(i)>factor*max(errmed(inicio+1:i-1)))        
            p1=plot([x(i),x(i)],[0.4,0.6],'-k^','LineWidth',2);
            inicio=i;
            i=i+9;
         end      
         i=i+1;
 end
      
plot(x, f,'k.','LineWidth',5,'MarkerSize',5)               
%axis([0 1 -0.1 1.1 ]);
%set(gca,'Xtick',[0 .5 1], 'FontSize',15)
%set(gca,'Ytick',[0 .5 1], 'FontSize',15)
box
hold off