MATLAB: How to suppress the output of another function that is called from the function

MATLAB: How to suppress the output of another function that is called from the function

bisectfunctionsubfunctionsupressurgent

I am trying to compile the roots calculated from a bisection method function and an incremental search method function. The output of nb from the incremental search function continually appears even when I suppress the incremental search function.
%my original function
function [X] = manyRoots(func,a,b,ns,tol)
%manyRoots: root location zeroes
%combines bisect and incsearch to detect roots when sign change occurs
%input:
%func = name of function
%xl = lower bound of the bracket
%xu = upper bound of the bracket
%ns = number of sub intervals
%tol = the desired tolerance
%output:
%roots = real roots
y = bisect(func,a,b,tol);
z = incsearch(func,a,b,ns);
[X]=[y,z];
end
I am trying to supress the nb from this function.
function xb = incsearch(func,xmin,xmax,ns)
% incsearch: incremental search root locator
% xb = incsearch(func,xmin,xmax,ns):
% finds brackets of x that contain sign changes
% of a function on an interval
% input:
% func = name of function
% xmin, xmax = endpoints of interval
% ns = number of subintervals (default = 50)
% output:
% xb(k,1) is the lower bound of the kth sign change
% xb(k,2) is the upper bound of the kth sign change
% If no brackets found, xb = [].
if nargin < 3, error('at least 3 arguments required'), end
if nargin < 4, ns = 50; end %if ns blank set to 50
% Incremental search
x = linspace(xmin,xmax,ns);
f = func(x);
nb = 0; xb = []; %xb is null unless sign change detected
for k = 1:length(x)-1
if sign(f(k)) ~= sign(f(k+1)) %check for sign change
nb = nb + 1;
xb(nb,1) = x(k);
xb(nb,2) = x(k+1);
end
end
if isempty(xb) %display that no brackets were found
disp('no brackets found')
disp('check interval or increase ns')
else
disp('number of brackets:') %display number of brackets
disp(nb)
end
I am trying to suppress the number of brackets that shows up above my answer X.

Best Answer

  • Easiest way would be to pass an optional flag into incsearch that specifies whether it should display or not.
    function xb = incsearch(func,xmin,xmax,ns, verbose)
    % incsearch: incremental search root locator
    % xb = incsearch(func,xmin,xmax,ns):
    % finds brackets of x that contain sign changes
    % of a function on an interval
    % input:
    % func = name of function
    % xmin, xmax = endpoints of interval
    % ns = number of subintervals (default = 50)
    % output:
    % xb(k,1) is the lower bound of the kth sign change
    % xb(k,2) is the upper bound of the kth sign change
    % If no brackets found, xb = [].
    arguments
    func
    xmin
    xmax
    ns = 50
    verbose = true
    end
    if verbose
    disp stuff
    end
  • Add a Comment

    Your email address will not be published. Required fields are marked *