fminsearch with if statement

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

 Akzeptierte Antwort

Matt J
Matt J am 26 Jul. 2013

0 Stimmen

[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 Kommentare

Christina
Christina am 27 Jul. 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 am 27 Jul. 2013
Actually, I just found it.
Thanks a lot for your help!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Matt J
Matt J am 26 Jul. 2013
Bearbeitet: Matt J am 26 Jul. 2013

0 Stimmen

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,

Kategorien

Mehr zu Function Creation 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