fminsearch with if statement

2 visualizaciones (últimos 30 días)
Christina
Christina el 26 de Jul. de 2013
Hello all,
I need to optimise two parameters by minimising by objective function.
I've got an equation that has got two parts.
The parameters that I want to optimise are p0 and b0.
I already got the vectors obs and p.
The equation is:
If p < p0, then sim = p +b0*p0
if p>= p0, then sim = 5
Then I need to put my simulated values into my objective function, that looks like:
OF = (sim - obs)^2
So, now I want to minimise OF using fminsearch.
How can I do that, if the parameter that I am looking for is inside the constraint?
Thanks

Respuesta aceptada

Matt J
Matt J el 26 de Jul. de 2013
[xmin, fmin] = fminsearch(@(x) OF(x,obs,p), xguess);
function val=OF(x,obs,p)
p0=x(1);
b0=x(2);
sim= (p +b0*p0).*(p<p0)+5.*(p>p0);
val=(sim - obs).^2;
  2 comentarios
Christina
Christina el 27 de Jul. de 2013
Hey Matt!
Thanks a lot for you reply, yes, that's mainly what I'd want to do.
However, the function option does not work for me, could you suggest how this could be written, without a function, i.e. as a simple script?
Thanks a lot.
Christina
Christina el 27 de Jul. de 2013
Actually, I just found it.
Thanks a lot for your help!

Iniciar sesión para comentar.

Más respuestas (1)

Matt J
Matt J el 26 de Jul. de 2013
Editada: Matt J el 26 de Jul. de 2013
Looks like you're doing a first order spline fit with a single free knot, and therefore this FEX file might already do everything you need,

Categorías

Más información sobre MATLAB en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by