Fitting two Parameters to an equation with data

32 views (last 30 days)
Hello, I've been stumped trying to solve this problem for a while now and was hoping someone here might be able to help. For background info I'm not completely new to MATLAB, I have a good understanding of the fundamentals and I've developed scripts and functions to run things like Newton-Rhapson method etc...
I have a set of data:
x=[0;69.18248;78.63425;83.30743;86.66291;87.06997]; t=[0;1;2;3;4;5];
And I want to fit an equation to this data. I have the equation shown below:
x= 1 - 0.5584*exp(-a*t) - 0.4416*exp(-b*t)
As you can see, I have the x data points for each t value. I do not, however, know the constant parameters a and b. I wish to find a value for them that will best fit this data. I've looked around for a solution and some say it might be possible using fminsearch but I don't understand how to set up the functions required to do so. Any help is much appreciated.
  4 Comments
Yao Li
Yao Li on 12 Apr 2013
I've tried the curve fitting tool. It seems Matt is right. Your equation cannot fit the data well
R
R on 12 Apr 2013
Okay guys, I'm sorry. I was given the wrong data points. Those x values should be /100 as they are percentages...

Sign in to comment.

Accepted Answer

Matt J
Matt J on 12 Apr 2013
y=1-x;
fun=@(ab) abs( .5584*exp(-ab(1)*t)+.4416*exp(-ab(2)*t) - y);
ab=fminsearch(fun,[0,0])
a=ab(1);
b=ab(2);
  2 Comments
Matt J
Matt J on 12 Apr 2013
Sorry, should be norm() instead of abs().
R
R on 12 Apr 2013
Alright, thanks a lot for the help! You've solved my problem.

Sign in to comment.

More Answers (1)

Yao Li
Yao Li on 12 Apr 2013
Edited: Yao Li on 12 Apr 2013
General model:
f(x) = 1 - 0.5584*exp(-a*x) - 0.4416*exp(-b*x)
Coefficients (with 95% confidence bounds):
a = 16.92 (-2.71e+06, 2.71e+06)
b = 0.3107 (0.2453, 0.3762)
Goodness of fit:
SSE: 0.002167
R-square: 0.9962
Adjusted R-square: 0.9952
RMSE: 0.02328
  2 Comments
mht6
mht6 on 28 Dec 2019
Could you elaborate on how you achieved/calculated the goodness of fit? It would be nice to apply similar information to data I am fitting

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!