[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

 Respuesta aceptada

Matt J
Matt J el 31 de Mayo de 2013
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 comentarios

Sebastian König
Sebastian König el 31 de Mayo de 2013
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 el 31 de Mayo de 2013
Editada: Matt J el 31 de Mayo de 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.
Sebastian König
Sebastian König el 6 de Jun. de 2013
That is in fact true. :-)
Thanks for your help!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Curve Fitting Toolbox en Centro de ayuda y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by