Azzera filtri
Azzera filtri

fminsearch with if statement

2 visualizzazioni (ultimi 30 giorni)
Christina
Christina il 26 Lug 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

Risposta accettata

Matt J
Matt J il 26 Lug 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 Commenti
Christina
Christina il 27 Lug 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 il 27 Lug 2013
Actually, I just found it.
Thanks a lot for your help!

Accedi per commentare.

Più risposte (1)

Matt J
Matt J il 26 Lug 2013
Modificato: Matt J il 26 Lug 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,

Categorie

Scopri di più su Get Started with Optimization Toolbox in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by