[curve fitting] dependence between coefficients

Dear all -
I need to fit my experimental data (x_data, y_data) with a biexponential decay model:
% define fit options
fo_ = fitoptions('method','NonlinearLeastSquares','Lower',lower,'Upper',upper);
% define fittype
ft_ = fittype('offset+a*exp(-(x-x0)/b)+c*exp(-(x-x0)/d)',...
'dependent',{'y'},'independent',{'x'},...
'coefficients',{ 'offset', 'x0', 'a', 'b', 'c', 'd'});
% perform fit
[cf_, gof, output] = fit(x_data,y_data,ft_,fo_);
offset = y-offset
x0 = x-offset
a and c = amplitudes (weighing factors)
b and d = decay constants
As my experimental data are normalised, i.e. the decay occurs from 1 to 0, I would like to implement the following condition in my fitting routine: a + c = 1
How can I do this?
I appreciate your help!
Sebastian

 Akzeptierte Antwort

Matt J
Matt J am 31 Mai 2013

0 Stimmen

Replace occurrences of c in your model with 1-a. Then fit the remaining parameters.
ft_ = fittype('offset+a*exp(-(x-x0)/b)+(1-a)*exp(-(x-x0)/d)',...
'dependent',{'y'},'independent',{'x'},...
'coefficients',{ 'offset', 'x0', 'a', 'b', 'd'});

3 Kommentare

Dear Matt,
thank you for your reply! This would be an elegant solution to this particular problem.
However, how should I proceed if I was to perform a triexponential fit and the same condition should apply (amp1 + amp2 + amp3 = 1)?
Cheers, Sebastian
Matt J
Matt J am 31 Mai 2013
Bearbeitet: Matt J am 31 Mai 2013
You could do the same thing.
amp1 = 1 - amp2 - amp3
The equation always allows one variable to be eliminated, no matter how many terms you have.
That is in fact true. :-)
Thanks for your help!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Curve Fitting Toolbox finden Sie in Hilfe-Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by