MATLAB Curve fitting with custom equation

631 Ansichten (letzte 30 Tage)
Onkar Khadke
Onkar Khadke am 29 Okt. 2020
Kommentiert: Cris LaPierre am 14 Jul. 2023
Hello,
I have a data (x,y) points and I want to fit it with custom equation as y = a*(1-exp(-b*x))+c*(exp(d*x)-1). I want to get a, b, c, d values after fitting with custom equation.The problem I am facing is that, the curve fitting happens to be good in the initial part of the data points, then at the later points of data, it does not fit properly. How to tweak with fitoptions so that I can fit my data exactly with custom equation. Also, if there needs any change to be done in the script please help me with that too, so that I can fit it exactly. If you can provide me snaps of the script that you are following to fit kindly share that too as it will help me to understand properly.
I am attaching the data file for your reference.
Thank you
  14 Kommentare
Onkar Khadke
Onkar Khadke am 11 Nov. 2020
Dear Alex Sha,
Thank you for your response. I am grateful that you helped me in getting the coefficients from the fit.
Surely, I can use the fitted coefficients by you as a starting guess to again try fitting in Matlab. I appreciate your devoted time given to help me in fitting the data.
Thank you
Sincerely
Onkar Khadke
Alex Sha
Alex Sha am 11 Nov. 2020
Pleasure, you are welcome!

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Cris LaPierre
Cris LaPierre am 29 Okt. 2020
If you have the curve fitting toolbox, I suggest using fittype and fit.
fittype will allow you to define a custom equation to fit to your data, and fit will try to fit that equation to your data. Just a caution, your model is much more complex than your data requires. This means you will need to provide reasonable estimates for your initial guesses (StartPoint) for coefficients a-d.
You can find a good example here.
data=readtable("675_base.xlsx");
ft = fittype('a*(1-exp(-b*x))+c*(exp(d*x)-1)',...
'dependent',{'y'},'independent',{'x'},...
'coefficients',{'a','b','c','d'});
f = fit(data.x,data.y,ft,'StartPoint',[0,0,0,0.25])
f =
General model: f(x) = a*(1-exp(-b*x))+c*(exp(d*x)-1) Coefficients (with 95% confidence bounds): a = 0 b = 0 c = 0.0006586 (0.0006251, 0.0006921) d = 0.0946 (0.09362, 0.09558)
plot(f,data.x,data.y)
  5 Kommentare
VIGNESH BALAJI
VIGNESH BALAJI am 14 Jul. 2023
@Cris LaPierre What method does fit use internally to fit equation with a data ?
Cris LaPierre
Cris LaPierre am 14 Jul. 2023
You could use the following syntax to determine what algorithm has been used to fit the data (output.algorithm).
You can then search how that algorithm performs fitting. In the example above, it is using the trust-region-reflective algorithm. You can use the fitOptions function to set desired algorithm options.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Get Started with Curve Fitting Toolbox finden Sie in Help Center und File Exchange

Produkte


Version

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by