How to fit a function with n-parameters
Show older comments
Hello,
I have Data (x,y) to which I want to fit a series of exponential functions like the following analytical function:
y = sum_i=1 to i=250 (A_i*exp(-x/tau_i))
This i tried to write in Matlab with vectors:
'sum(Ai.*exp(-x./taui),2)'
with Vectors Ai and taui each 1x250. I am not sure if it is possible to write it in this "vectorial" manner, but I don't know how to frame it otherwise.
The taui are known parameters and only the coefficients from Ai need to be fitted, so it is actually only a linear fit.
For the fitting i created a fittype:
myfittype = fittype('sum(Ai.*exp(-x./taui),2)','dependent',{'y'},'problem',{'taui'},'independent',{'x'},'coefficients',{'Ai'});
myfit = fit(x,y,myfittype,'StartPoints',Ai,'problem',taui);
Here occurs the Problem I am stuck with and you hopefully can help me out:
The fittype function seems not to take all vector entries as Parameters, but only the first.
So my question in general is: How can I create a function with n-parameters and fit to these parameters?
3 Comments
dpb
on 12 Sep 2018
Do you mean to fit an exponential function to 250 sets of data I hope and not a single function with 250 exponential terms???
Simon Streit
on 13 Sep 2018
dpb
on 13 Sep 2018
That's totally impractical with the fittype structure; while you can write an m-file to evaluate the equation, coefficients are specified as individual strings so you would have to have and try to dereference 500 separate variables; absolutely unworkable.
The likelihood of being able to estimate that many coefficients is also probably vanishingly small, but the only way I see feasible at all would be to build the model and try to solve with nlinfit
Answers (0)
Categories
Find more on Linear and Nonlinear Regression in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!