nlinfit not accurately modeling data

1 visualización (últimos 30 días)
Nick Schmandt
Nick Schmandt el 29 de En. de 2012
Hi! I am probably doing something stupid, but I have a bell-shaped function I want to model as an inverse of the sum of exponentials (of the form 1/(exp((x+a1)/a2)+exp((x+a3)/a4))+a5).
Here is what I have;
input=[-45:5:30]';
output=[.95;1.05;1.3;1.85;1.55;.95;.6;.5;.4;.35;.3;.275;.25;.225;.2;.175]';
mdl = @(a,x)((1/(exp((x+a(1))/a(2))+exp((x+a(3))/a(4))))+a(5))
a0=[97;-30;-18;15;.5];
and then
fitted=nlinfit(input, output, mdl, a0);
but the values I get back are terrible, and don't match the data at all, even when I change the starting values in a0. What am I doing wrong?
  3 comentarios
Nick Schmandt
Nick Schmandt el 29 de En. de 2012
The starting values I used were values from another bell-curve double exponential fit, but I must doing something wrong, because if I just type in mdl(a0, input), all the output values are zero except for the last one...
Nick Schmandt
Nick Schmandt el 29 de En. de 2012
and thank you very much!

Iniciar sesión para comentar.

Respuesta aceptada

Tom Lane
Tom Lane el 29 de En. de 2012
In your model function you have "1/<stuff>" where you almost certainly intended element-by-element division, "1./<stuff>". You'll also want to remove the transpose from the definition of output.
  1 comentario
Nick Schmandt
Nick Schmandt el 31 de En. de 2012
Thank you! That fixed it, the starting values were just off so much that it wasn't working.

Iniciar sesión para comentar.

Más respuestas (0)

Community Treasure Hunt

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

Start Hunting!

Translated by