Getting inconsistent results for fitting different series of data to a nonlinear function

1 view (last 30 days)
I have 15 series of experimental data taken at different frequencies. I also have a function which we think can describe the data. I am trying to fit each series of data which is taken at different frequency domains to the function and obtain the value of the fitting parameters (I have 4 fitting parameters) and use the obtained values of the fitting parameters to calculate the efficiency of the system by another equation and compare it with the experimental efficiency. The problem that I encounter is for about 5 series of data, the obtained fitting parameters make sense physically and the obtained theoretical effciency is consistent with the experimental efficiency which is good. For 3 series of data the fitted curve is good but the calculated theoretical efficiency from the obtained fitting parameters is less than experimental efficiency which is weird (by a factor of 2). And for about 5 series of data the fitted curve is not very good and it doesn't fit data well at the bottom but the calculated effciency from the fitting parameters is consistent with the experiment. I have tried many algorithms and approaches (including all the solvers compatible with my problem in optimiztion and curve fitting toolbox with their different algorithms) to solve the problem but I am still struggling.
I am wondering are there any thoughts or suggestions?
Thank you in advance!

Answers (1)

Walter Roberson
Walter Roberson on 25 Apr 2022
Nonlinear curve fitting often encounters local minima.
Some kinds of nonlinear systems are notoriously difficult to fit properly -- especially sums of Gaussians. In general if you have a nonlinear system with multiple distinct peaks, it is common to effectively end up fitting one of the peaks and treating the other like noise.
Whether the peaks for a nonlinear system can be fit well depends a fair bit on the system... which you did not happen to describe. So the only advice we can give you is to try multistart methods.
  3 Comments
Walter Roberson
Walter Roberson on 30 Apr 2022
The data points you show in the "not fill well at the bottom" are so steep that I do not think you can realistically fit any function to those, except possibly piecewise.
To get that kind of steepness, you pretty much need to be using a gaussian with high phase, one per segment -- but sum of gaussians is quite difficult to fit.

Sign in to comment.

Categories

Find more on Curve Fitting Toolbox in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!