Curve Fitting for a function with 3 fitting parameters.
12 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
I have imported a file in MATLAB which has 2 columns. One column has data of time (t) and other column has the data of ratio. I have a function which is (At^2)/((B(e)^Ct)-1). A,B,C are fitting parameters. I have plotted the curve for ratio. I want MATLAB to find the values of ABC considering different times t such that the curve of the ratio and the curve of the function, fit. The outcome looks something like this. The red dots is the curve for ratio and I want MATLAB to generate the blue curve which fits when A,B,C are solved. I have seen curve fitting documentation but fixed functions are used. I have a different function to use so please help me out.
0 comentarios
Respuestas (3)
Bjorn Gustavsson
el 18 de Dic. de 2020
Editada: Bjorn Gustavsson
el 18 de Dic. de 2020
For this I typically use standard non-linear least-square-fitting. That only requires some optimisation-routine, like fminsearch. Something like this should work:
curve_fcn = @(ABC,t) (ABC(1)*t.^2)./(ABC(2)*exp(ABC(3)*t)-1);
err_fcn = @(par,t,y,fcn) sum((y-fcn(par,t)).^2);
res_fcn = @(par,t,y,fcn) (y-fcn(par,t)); % if you have the optimisation toolbox lsqnonlin is often preferable
ABC0 = [1 1 1]; % Some sensible start-guess for the optimisation.
ABSbest = fminsearch(@(ABC) err_fcn(ABC,t,y,curve_fcn),ABC0);
% Test example:
y0 = curve_fcn([1,2,1/4],t) + 0.5*randn(size(t));
ABC0 = [1 1 1];
ABCbest = fminsearch(@(ABC) err_fcn(ABC,t,y0,curve_fcn),ABC0);
If you have the optimization toolbox the lsqnonlin function is often much faster. If you know your data you also know the measurement errors and their statistics, then you might also strongly benefit from a properly weighted least-square fit, or if the measurements have a not-normal-distribution optimizing the proper likelihood-function.
HTH
0 comentarios
Daniel Pollard
el 18 de Dic. de 2020
Bjorn's method will work. I'm just offering a second option, from the file exchange:
This has worked for me, it's a bit of a learning curve (although that could just be me), but works great.
0 comentarios
Ver también
Categorías
Más información sobre Least Squares en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!