Contenido principal

Ajuste no lineal de curvas con lsqcurvefit

lsqcurvefit permite ajustar fácilmente funciones no lineales parametrizadas a los datos. También puede utilizar lsqnonlin; lsqcurvefit es simplemente una forma conveniente de llamar a lsqnonlin para el ajuste de curvas.

En este ejemplo, el vector xdata representa 100 puntos de datos y el vector ydata representa las medidas asociadas. Genere los datos para el problema.

rng(5489,'twister') % reproducible
xdata = -2*log(rand(100,1));
ydata = (ones(100,1) + .1*randn(100,1)) + (3*ones(100,1)+...
    0.5*randn(100,1)).*exp((-(2*ones(100,1)+...
   .5*randn(100,1))).*xdata);

La relación modelada entre xdata y ydata es

ydatai=a1+a2exp(-a3xdatai)+εi.

El código genera xdata a partir de 100 muestras independientes de una distribución exponencial con media de 2. El código genera ydata a partir de su ecuación definitoria con a = [1;3;2], perturbada añadiendo desviadas normales con desviaciones estándar [0.1;0.5;0.5].

La meta es encontrar parámetros aˆi, i = 1, 2, 3 para el modelo que mejor se ajuste a los datos.

Para ajustar los parámetros a los datos utilizando lsqcurvefit, es necesario definir una función de ajuste. Defina la función de ajuste predicted como una función anónima.

predicted = @(a,xdata) a(1)*ones(100,1)+a(2)*exp(-a(3)*xdata); 

Para ajustar el modelo a los datos, lsqcurvefit necesita una estimación inicial a0 de los parámetros.

a0 = [2;2;2];

Llame a lsqcurvefit para encontrar los parámetros aˆi que mejor se ajusten.

[ahat,resnorm,residual,exitflag,output,lambda,jacobian] =...
   lsqcurvefit(predicted,a0,xdata,ydata);
Local minimum possible.

lsqcurvefit stopped because the final change in the sum of squares relative to 
its initial value is less than the value of the function tolerance.

<stopping criteria details>

Examine los parámetros resultantes.

disp(ahat)
    1.0169
    3.1444
    2.1596

Los valores ajustados ahat están dentro del 8% de a = [1;3;2].

Si dispone del software Statistics and Machine Learning Toolbox™, utilice la función nlparci para generar intervalos de confianza para la estimación ahat.

Consulte también

| (Statistics and Machine Learning Toolbox)

Temas