% Eliminación de ruido con AP punto a punto centrando el stencil (las fronteras si se adaptan).
%   capelimina1escamcpapcentrado(x,f,fsin,k,p)
%   Entradas
%      x    = nodos iniciales
%      f    = f(x)
%      fsin = f sin ruido
%      k    = grado para el polinomio de la AP
%      p    = nodos a la izquierda y derecha, ie x(i)-p:x(i)+p es el stencil de trabajo
%   Salidas
%      Plot de la funcion con ruido, sin ruido y la reconstruccion
%      ECM y SNR segun varias combinaciones

function capelimina1escamcpapcentrado(x,f,fsin,k,p)
  [mx,nx]=size(x);
  for i=p+1:nx-p
         coef=qk(x(i-p:i+p),f(i-p:i+p),k);
         [c1,c2]=size(coef);
         coef1=coef(c1:-1:1);
         fa(i)=polyval(coef1,x(i));
  end
   
  %Fronteras
  for i=1:p
         nummepaso=1-(i-p);
         coef=qk(x(i-p+nummepaso:i+p+nummepaso),f(i-p+nummepaso:i+p+nummepaso),k);
         [c1,c2]=size(coef);
         coef1=coef(c1:-1:1);
         fa(i)=polyval(coef1,x(i));
  end   
  for i=nx-p+1:nx
         nummepaso=nx-(i+p);
         coef=qk(x(i-p+nummepaso:i+p+nummepaso),f(i-p+nummepaso:i+p+nummepaso),k);
         [c1,c2]=size(coef);
         coef1=coef(c1:-1:1);
         fa(i)=polyval(coef1,x(i));
  end  
    
    %fr la reconstruccion
    %fsin la sin ruido , el ideal a reconstruir
    %fn la funcion original con ruido

    disp('Entre fr y fsin')
    error=mse(fsin,fa);
    error
 
    disp('Entre fr y fn')
    error=mse(f,fa);
    error
    
    disp('Entre fr y fn')
    error=calculosnr(fa,f);
    error
    
    disp('Entre fin y fr')
    error=calculosnr(fsin,fa);
    error
   
hold on
    
plot(x, f,'k.','LineWidth',5,'MarkerSize',5)   
plot(x, fsin,'--k','LineWidth',2) 
plot(x,fa,'-k','LineWidth',3);

axis([0 1 -0.2 1.2 ]);
set(gca,'Xtick',[ 0 0.5 1], 'FontSize',15)
set(gca,'Ytick',[ 0 0.5 1], 'FontSize',15)

%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
