Ajuste no lineal de curvas con lsqcurvefit
lsqcurvefit
le 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
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 , = 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 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.
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
lsqcurvefit
| nlparci
(Statistics and Machine Learning Toolbox)