Home > PR > max_incr_pend_Lcurva.m

max_incr_pend_Lcurva

PURPOSE ^

lambda=max_incr_pend_Lcurva(r,Lx,lambdas)

SYNOPSIS ^

function regu=max_incr_pend_Lcurva(x,y,lambdas)

DESCRIPTION ^

 lambda=max_incr_pend_Lcurva(r,Lx,lambdas)

       Esta función determina el punto de maxima variacion en el angulo
       que forma la pendiente en los puntos de la L-curva

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function regu=max_incr_pend_Lcurva(x,y,lambdas)
0002 
0003 % lambda=max_incr_pend_Lcurva(r,Lx,lambdas)
0004 %
0005 %       Esta función determina el punto de maxima variacion en el angulo
0006 %       que forma la pendiente en los puntos de la L-curva
0007 
0008 
0009 if (size(x,1)<size(x,2))
0010    x=x';
0011    y=y';
0012 end
0013 
0014 
0015 xx=linspace(min(x),max(x),25000);
0016 
0017 
0018 % Este es el incremento de x
0019 
0020 h= xx(2)-xx(1);
0021 
0022 % Interpolamos los valores de y en los puntos xx
0023 
0024 
0025 
0026 yy = interp1(x,y,xx,'cubic');
0027 
0028 
0029 % Calculamos la primera derivada (pendiente de la curva en cada punto)
0030  
0031 pendientes = diff(yy)/h;
0032 
0033 % El angulo en grados es
0034 
0035 angulos = atan(pendientes)*180/pi;
0036 
0037 angulos = (angulos<=-(85))*(-85) + (angulos>=(-10))*(-10) + angulos.*(angulos>(-85) & angulos<(-10)); 
0038 
0039 % Buscamos la diferencia en grados
0040 
0041 a=diff(angulos);
0042 
0043 % Buscamos donde se produce la maxima variacion
0044 
0045 %a = diff(pendientes);
0046 
0047 mc=find(a==max(max(a)));
0048 
0049 
0050 regu = interp1(x,lambdas',xx(mc),'cubic');
0051 
0052 
0053 %figure(2),subplot(2,2,1);plot(xx,yy,'.');hold on,plot(xx(mc),yy(mc),'ks'),hold off
0054 %subplot(2,2,2);plot(angulos,'.-');hold off
0055 %subplot(2,2,3);plot(a,'.-');hold off
0056 %distancias = abs(lambdas-regu);
0057 %pos = find(distancias==min(distancias));
0058 %pos = pos(1);
0059 %subplot(2,2,4);plot(x,y,'.'),hold on,plot(x(pos),y(pos),'ro');hold off
0060 %pause(0.2);
0061 
0062 %val = input('Parar (1/0)');
0063 %
0064 %if (val==1)
0065 %   keyboard;
0066 %end

Generated on Wed 29-Nov-2006 16:19:19 by m2html © 2003