MATLAB: How not to display error message from fzero

errorfor loopfunctionMATLABMATLAB Online Server

I've defined the function:
function zeros = findzeros(myf,n_points,min,max)
x = ones(n_points,1);
starting_points=linspace(min,max,n_points);
% warning('off')
for i=1:n_points
try
x(i) = fzero(myf, starting_points(i));
catch
fprintf('No root found');
end
end
x = x(x>=min);
zeros = [x(diff(x)>1e-12); x(1)];
end
In the while looping if often happens that there's an error. I tried using trycatch as suggested elsewhere, but it still results in error messages such as:
Exiting fzero: aborting search for an interval containing a sign change
because no sign change is detected during search.
Function may not have a root.
And there's no messa 'No root found' printed. How can I fix this?

Best Answer

function zeros = findzeros(myf, n_points, xmin, xmax)
x = ones(n_points,1);
starting_points = linspace(xmin, xmax, n_points);
opts = optimset('display', 'none');
for i=1:n_points
x(i) = fzero(myf, starting_points(i), opts);
end
x = x(x >= xmin);
zeros = [x(diff(x)>1e-12); x(1)];
end