Path: news.mathworks.com!not-for-mail
From: "Per Sundqvist" <per.sundqvist@live.com>
Newsgroups: comp.soft-sys.matlab
Subject: Re: Double exponential decay fit
Date: Wed, 14 Jan 2009 20:29:02 +0000 (UTC)
Organization: Chalmers Tekniska H&#246;gskola
Lines: 42
Message-ID: <gklhue$7ht$1@fred.mathworks.com>
References: <gkl7vl$nb0$1@fred.mathworks.com> <gkl9ps$rd2$1@fred.mathworks.com> <gklce7$nl7$1@fred.mathworks.com>
Reply-To: "Per Sundqvist" <per.sundqvist@live.com>
NNTP-Posting-Host: webapp-05-blr.mathworks.com
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 8bit
X-Trace: fred.mathworks.com 1231964942 7741 172.30.248.35 (14 Jan 2009 20:29:02 GMT)
X-Complaints-To: news@mathworks.com
NNTP-Posting-Date: Wed, 14 Jan 2009 20:29:02 +0000 (UTC)
X-Newsreader: MATLAB Central Newsreader 266682
Xref: news.mathworks.com comp.soft-sys.matlab:511590


"Jean-Sebastien" <newsreader@mathworks.com> wrote in message <gklce7$nl7$1@fred.mathworks.com>...
> Hi Aaron,
> 
> Thanks for your reply. Yes I realized that there isn't too much of info in my first post but thanks to have reply anyway. I have made a bit of research and found that sigmaplot (analysis software) is using the Marquardt-Levenberg algorithm to find the
> coefficients (parameters) of the independent variable(s) that give the &#8220;best fit&#8221;
> between the equation and the data. (Shrager, R.I. (1970). Regression with Linear Constraints: An Extension of the Magnified Diagonal Method. Journal of the Association for Computing Machinery, 17, 446-452.). 
> 
> So now my question is how do I found out which algorithm Matlab is using? And how can I adapt it so it would use this algorithm?
> 
> Many thanks,
> Jean-Seb
> 
> 
> "Aaron Callard" <no.thanks@hotmail.com> wrote in message <gkl9ps$rd2$1@fred.mathworks.com>...
> > "Jean-Sebastien" <newsreader@mathworks.com> wrote in message <gkl7vl$nb0$1@fred.mathworks.com>...
> > > Hi folks,
> > > OK :
> > > You have a set of data points (time,response) which correspond to a simple two exponential decay function (peak to baseline). 
> > > You feed sigmaplot10 with it and using the simple equation y=a*exp(-bx)+c*exp(-dx) it gives you a nice fit. 
> > > Now you do it in Matlab using the same data, same equation and on 2 out of 3 fit you've got a funny fit which obviously is wrong... 
> > > Question:
> > > Does anyone can explain the decrepancy between the two softwares? why sigmaplot10 can fit a simple two exponential decay function while Matlab doesn't?
> > > Is there any issue with the method used? If so is there an alternative to make Matlab fit this simple two eponential decay function correctly?
> > > Thanks for your help,
> > > JS
> > > 
> > 
> > um it's hard to answer your question as you have not really given much information.  It's like me asking why C++ can give me answer but pearl can't.  Matlab is a programing language.  What algorithm are you using to fit the points, in matlab.  What is sigmaplot10?  
> > 
> > My guess is that the algorithm you are using in matlab is messed up slightly.  You shouldn't blame the language for code written in it.
> > 
> > Aaron

Hi, I think my function exp2fit could do it very well:

http://www.mathworks.com/matlabcentral/fileexchange/21959

,but sometimes with rough data you need optimization toolbox to access lsqcurvefit (which is optionally post-used in my function). If you have your own "lsqcurvefit" (look at file exchange) maby it will do it equally well?

Also, sum of two exponentials have a lot of functional freedom to be oscillating, or decaying, when the coefficients are complex. If there is "swings" (with additionally large noise) in your data it may fit it to a damped harmonic oscillating function.

/Per