fminsearch with if statement

2 views (last 30 days)
Christina on 26 Jul 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?

Accepted Answer

Matt J
Matt J on 26 Jul 2013
[xmin, fmin] = fminsearch(@(x) OF(x,obs,p), xguess);
function val=OF(x,obs,p)
sim= (p +b0*p0).*(p<p0)+5.*(p>p0);
val=(sim - obs).^2;
Christina on 27 Jul 2013
Actually, I just found it.
Thanks a lot for your help!

Sign in to comment.

More Answers (1)

Matt J
Matt J on 26 Jul 2013
Edited: Matt J on 26 Jul 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,


Find more on Problem-Based Optimization Setup in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!