4 views (last 30 days)

Show older comments

I am trying to find the values of the constants a, b and c from the exponential equation. The data points of x and t needs to be exported from an excel file(given) . I have tried solving it using lsqcurvefit but I am facing problem in finding the initial values of the parameters to solve the problem.

The equation is

Here, x and t are variables. The value of y is constant and equal to 6.

J. Alex Lee
on 8 Aug 2021

data = readtable("Book1.xlsx");

Alternatively, based on my reparameterization above you can as a first pass say everything after looks like saturation, take the average, and declare

mask = data.t < 4;

F = mean(data.x(~mask))

Now you can linearize the problem and say

To visualize

z = log(F-data.x);

plot(data.t,z,'.')

hold on

As expected, the plot is pretty linear for , so you can do a linear fit and visualize

lf = polyfit(data.t(mask),z(mask),1)

plot(data.t,polyval(lf,data.t),'-')

Then convert the linear fit parameters back to

H = -lf(1)

G = exp(lf(2))

And then you're back to the algebra to get back to . This procedure, which now only relies on observing the saturation behavior, results in

figure

plot(data.t,data.x,'.')

hold on

plot(data.t,F - G*exp(-H*data.t),'-')

J. Alex Lee
on 8 Aug 2021

Do you have an intuition of what the graph of looks like? Hint: it looks like your plot, scaled and shifted roughly only in the y direction, so roughly whatever appears in front of t in the exponential is roughly unity. Next step, simplify your parameterization a bit so you can intuitively scale and shift...say

That makes it even easier to see the link between your data. At , and at , so the scale factor and shift factor is .

Now it's an algebra problem to get from to .

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

Start Hunting!