禁用进度条Matlab

时间:2017-04-13 09:33:15

标签: matlab progress-bar progress

我在Matlab中使用了由大量嵌套函数组成的代码。大量这些函数显示progressbars。是否有任何Matlab命令或任何可能禁用progressbars显示,而无需查找和注释/删除调用它们的所有行?

1 个答案:

答案 0 :(得分:2)

我从你的评论中假设你的意思是你有许多函数调用var offsetHeight = document.getElementById('divId').offsetHeight;

你可以用你自己的waitbar重载'waitbar'函数,确保它在搜索路径上更高。虽然这通常不是一个好主意,并且当您(或您使用代码的任何其他人)确实想要使用等待栏时它可能会导致问题,但它不会出现。

另一种(在我看来最好)禁用它的方法是创建自己的中间函数,您可以在其中打开/关闭等待栏:

waitbar.m

这样做的缺点是你需要使用新功能'waitbar'找到并替换所有waitbar命令,但这只是一次性操作。

然后禁用以后对waitbar的所有调用:

function h = mywaitbar ( varargin )
  % preallocate output
  h = [];
  % use an internal persistent variable
  persistent active
  % by default set to true
  if isempty ( active ); active = true; end
  % Check to see if its a control call
  if nargin == 1 && ischar ( varargin{1} )
    % is it a call to disable it?
    if strcmp ( varargin{1}, '**disable**' )
      active = false;
    else 
      active = true;
    end
    return
  end
  if active 
    h = waitbar ( varargin{:} );
  end
end      

运行您的代码,不会显示任何等待栏。使用peristent变量将保持状态,直到重新启动Matlab(或者调用 mywaitbar ( '**disable**' ) )。要停止“全部清除”重置,您可以在函数中使用clear all

重新启用等候栏:

mlock

要测试它,请使用以下代码:

 mywaitbar ( '**enable**' )

现在禁用等待栏功能:

for ii=1:10
  h = mywaitbar ( ii );
  fprintf ( 'test with waitbar %i\n', ii);
end

您将看到上面的代码在没有显示等待栏的情况下运行。