Fitting an equation with x,y variables and b, d constant.
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
ly
el 17 de Nov. de 2016
Comentada: Torsten
el 21 de Nov. de 2016
Hi,
I have an equation.
x=[10,50,100,300,500,1000,1500,2000,3000];
y=[0.11,0.17,0.2,0.24,0.29,0.3,0.31,0.35,0.38];
I want to fit this equation and get b and d values.
I tried with lsqcurvefit command, but I can not convert this equation to y=function(x).
Anybody has a suggestion.
0 comentarios
Respuesta aceptada
Torsten
el 17 de Nov. de 2016
Use lsqnonlin and define the functions f_i as
f_i = 1/a*(b-ydata(i)).^1.5-log(d./xdata(i))+0.5*log(1-ydata(i)/b)
Best wishes
Torsten.
5 comentarios
Walter Roberson
el 21 de Nov. de 2016
lsqnonlin does not calculate Chi-Square or any other probability measure. It does not create any hypotheses about how well the model fits: it only searches for a minimum.
Torsten
el 21 de Nov. de 2016
You don't get statistics from lsqnonlin.
You will have to use tools like nlinfit in combination with nlparci and nlpredci.
Best wishes
Torsten.
Más respuestas (1)
Walter Roberson
el 18 de Nov. de 2016
a = some value
y1 = @(b, d, x) -b .* (exp(-(2/3) .* lambertw(-3 .* (b.^3 ./ a.^2).^(1/2) .* d.^3 ./ x.^3)) .* d.^2 - x.^2) ./ x.^2
y2 = @(b, d, x) -b .* (exp(-(2/3) .* lambertw(3 .* (b.^3 ./ a.^2).^(1/2) .* d.^3 ./ x.^3)) .* d.^2 - x.^2) ./ x.^2;
guessbd = rand(1,2);
fit1 = fittype(y1, 'coefficients', {'b', 'd'}, 'dependent', 'y', 'independent', x);
fit2 = fittype(y2, 'coefficients', {'b', 'd'}, 'dependent', 'y', 'independent', x);
[bd1, gof1] = fit( x, y, fit1, 'startpoint', guessbd );
[bd2, gof2] = fit( x, y, fit2, 'startpoint', guessbd );
The pair of fits is due to there being two solutions when y is expressed in terms of x, almost identical but differing in sign of the LambertW expression. You would need to check the goodness of fit results to see which was better.
Ver también
Categorías
Más información sobre Interpolation 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!