禁用进度条 Matlab
Disable progress bar Matlab
我正在使用由大量嵌套函数组成的 Matlab 代码。大量的这些函数显示progressbars
。是否有任何 Matlab 命令或任何可能禁用 progressbars
显示,而不必定位和 comment/remove 调用它们的所有行?
根据您的评论,我假设您的意思是您有很多调用 waitbar
的函数。
您可以使用自己的 waitbar.m
重载 'waitbar' 函数,确保其在搜索路径上的位置更高。虽然这通常不是一个好主意,并且将来当您(或您使用您的代码的任何其他人)确实想要使用等待栏但它没有出现时可能会导致问题。
另一种(在我看来更可取)禁用它的方法是创建您自己的中间函数,您可以在其中切换 on/off 等待栏:
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
这样做的缺点是您需要查找所有等待栏命令并将其替换为新功能 'waitbar',但这是一次性操作。
然后通过以下方式禁用对 waitbar 的所有未来调用:
mywaitbar ( '**disable**' )
运行 您的代码将不会显示,并且不会显示等待栏。使用持久变量将保持状态,直到您重新启动 Matlab(或调用 clear all
)。要停止 'clear all' 重置它,您可以在函数中使用 mlock
。
要重新启用等待栏:
mywaitbar ( '**enable**' )
要测试它,请使用以下代码:
for ii=1:10
h = mywaitbar ( ii );
fprintf ( 'test with waitbar %i\n', ii);
end
现在禁用等待栏功能:
mywaitbar ( '**disable**' )
for ii=1:10
h = mywaitbar ( ii );
fprintf ( 'test with waitbar disabled %i\n', ii);
end
您会看到上面的代码运行时没有显示等待栏。
我正在使用由大量嵌套函数组成的 Matlab 代码。大量的这些函数显示progressbars
。是否有任何 Matlab 命令或任何可能禁用 progressbars
显示,而不必定位和 comment/remove 调用它们的所有行?
根据您的评论,我假设您的意思是您有很多调用 waitbar
的函数。
您可以使用自己的 waitbar.m
重载 'waitbar' 函数,确保其在搜索路径上的位置更高。虽然这通常不是一个好主意,并且将来当您(或您使用您的代码的任何其他人)确实想要使用等待栏但它没有出现时可能会导致问题。
另一种(在我看来更可取)禁用它的方法是创建您自己的中间函数,您可以在其中切换 on/off 等待栏:
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
这样做的缺点是您需要查找所有等待栏命令并将其替换为新功能 'waitbar',但这是一次性操作。
然后通过以下方式禁用对 waitbar 的所有未来调用:
mywaitbar ( '**disable**' )
运行 您的代码将不会显示,并且不会显示等待栏。使用持久变量将保持状态,直到您重新启动 Matlab(或调用 clear all
)。要停止 'clear all' 重置它,您可以在函数中使用 mlock
。
要重新启用等待栏:
mywaitbar ( '**enable**' )
要测试它,请使用以下代码:
for ii=1:10
h = mywaitbar ( ii );
fprintf ( 'test with waitbar %i\n', ii);
end
现在禁用等待栏功能:
mywaitbar ( '**disable**' )
for ii=1:10
h = mywaitbar ( ii );
fprintf ( 'test with waitbar disabled %i\n', ii);
end
您会看到上面的代码运行时没有显示等待栏。