Fitting an equation with x,y variables and b, d constant.

조회 수: 1 (최근 30일)
ly
ly 2016년 11월 17일
댓글: Torsten 2016년 11월 21일
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.

채택된 답변

Torsten
Torsten 2016년 11월 17일
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
Walter Roberson
Walter Roberson 2016년 11월 21일
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
Torsten 2016년 11월 21일
You don't get statistics from lsqnonlin.
You will have to use tools like nlinfit in combination with nlparci and nlpredci.
Best wishes
Torsten.

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Walter Roberson
Walter Roberson 2016년 11월 18일
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.
  댓글 수: 1
ly
ly 2016년 11월 21일
Ok, I got it.
How to get Chi-Square from lsqnonlin command?

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Least Squares에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by