Clear Filters
Clear Filters

Increase stability of curve fit

1 view (last 30 days)
twig27
twig27 on 4 Mar 2017
Edited: John D'Errico on 4 Mar 2017
Hello,
I have a signal which I want to fit with the following function:
a*exp(-b*t) - c*exp(-d*t) + e*exp(-f*t)*cos(g*t) + h*exp(-k*t)*sin(l*t) + off
I know that my signal actually has this form and I also know the coefficients, but when I enter them as start points the fit does not exactly match the signal. How can I improve this?
I've chosen a Levenberg-Marquardt-alogorithm with LAR-robustness. Is the problem the large number of parameters?
Regards
twig
  2 Comments
Walter Roberson
Walter Roberson on 4 Mar 2017
Could you attach some data for us to test with?
twig27
twig27 on 4 Mar 2017
I've uploaded the signal time and coefficient vector. Unfortunately I cannot upload an .sfit-file, does this help?

Sign in to comment.

Answers (1)

John D'Errico
John D'Errico on 4 Mar 2017
Edited: John D'Errico on 4 Mar 2017
People think they have this great model. And computers can do anything. :) NOT TRUE.
A vast part of your data is constant, providing no information except what the value of that constant term at the end will be.
...
1.9608e-11
1.9608e-11
1.9608e-11
1.9608e-11
1.9608e-11
1.9608e-11
1.9608e-11
1.9608e-11
1.9608e-11
1.9608e-11
1.9608e-11
1.9608e-11
1.9608e-11
1.9608e-11
1.9608e-11
1.9608e-11
1.9608e-11
1.9608e-11
1.9608e-11
1.9608e-11
Essentially, about half of your data has no information content. The rest of it? Wildly insufficient to fit the model with all of those coefficients.
plot(time,data_transfer_out)
Sorry, but the fit that you got was worthless. Any attempts to fit that model, using any scheme on this data, will be a complete and utter waste of time.
On top of all that, sums of exponential models are notorious for being difficult to fit.
You can't get blood from a rock. And as bloodless rocks go? This one is highly anemic.

Community Treasure Hunt

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

Start Hunting!