MATLAB: Can one run fminsearch for a function defined by cases

MATLAB

First, I have a function defined by cases like
if x<1 f(x)=x
if x>1 f(x)=sqrt(x)
Second, suppose I want to calculate the maximium of f for 0<x<2 (this problem itself is trivial, but as an example).
Third, can one run fminsearch for such problem?

Best Answer

Because you are optimizing over a known bounded interval fminbnd is more appropriate:
x_optimal = fminbnd(@fun,0,2)
function out=fun(x)
if x<=1 out=x; else out=sqrt(x); end
out=-out; %because we're maximizing
end