HWIN = multiwaitbar(bartag, x, wbtext, varargin) HWIN = multiwaitbar(bartag, x, wbtext, 'stopb', 'abort', varargin) HWIN = multiwaitbar(bartag, x, wbtext, 'suspb', 'abort', varargin) HWIN = multiwaitbar(bartag, x, wbtext, 'message', 'msg', varargin) HWIN = multiwaitbar(bartag, x) HWIN = multiwaitbar(bartag, -1) (kill waitbar identified with "bartag") HWIN = multiwaitbar(-1) (kill figure, including waitbars)
Plot one or more waitbars in a unique figure
| bartag | any | string, signature of waitbar |
| x | any | double, progress (in % ==> range = 0-100)
Note: set x to NaN for indefinite waitbar
|
| wbtext | any | string, text above waitbar
Note: the space reserve for this text is determined at startup
of waitbar
|
| varargin | any | properties to be passed on to the "figure" command (has no effect
when figure already exists)
SPECIAL KEYWORDS:
'alignfigure',FIGHANDLE
Waitbar will be alligned with figure FIGHANDLE. Default
behavior: waitbar will align woth current figure. Note:
when working with hidden figures; define this property to
avoid waitbar from being hidden.
'stepsize',VALUE
changes default stepsize to VALUE. All calls will be
ignored, unless rem(x,VALUE)==0.
'stopb','abort'
adds a stopbutton with text 'abort'
'suspb','abort'
adds a suspend button with text 'abort' this works
together with function "stopwaitbar"
|
| HWIN | any | handle of the figure with the waitbar(s) |
multiwaitbar('uniqueTag',10,'10%','name','example')
EXAMPLE 1:
multiwaitbar('loop1',0,'Initialising...','name','Check');
tmp1=onCleanup(@()multiwaitbar('loop1',-1))
tmp2=onCleanup(@()multiwaitbar('loop2',-1))
for k=1:(5)
multiwaitbar('loop1',100*(k-.5)/5,sprintf('k=%d',k));
for r=1:5:100
if stopwaitbar(hwait),return;end
multiwaitbar('loop2',r,sprintf('r=%d',r));
pause(0.01)
end
end
EXAMPLE 2:
% (display remaining waiting time):
hwait=multiwaitbar('loop1',0,'Initialising...','name','Check');
tmp1=onCleanup(@()multiwaitbar('loop1',-1))
t0=clock;
tm=t0;
for k=1:length(vl)
%<do task k>
pause(0.1);
if rem(k,100)==0&&etime(clock,tm)>1 %etime(clock) is CPU hungry
if stopwaitbar(hwait),return;end
%- k tasks done;
%- etime(clock,t0) time spent;
%- length(vl)-k tasks due;
%- expected remaining time: (length(vl)-k)*etime(clock,t0)/k
multiwaitbar('loop1',100*(k)/length(vl),...
sprintf('About %.0f seconds remaining',(length(vl)-k)* etime(clock,t0)/k));
tm=clock; %store "tm" for timing next message
end
end
EXAMPLE 3:
only display when progress is at least 1 %. In this way the total number
of calls to multiwaitbar is limited. There may be a long time between
consecutive updates multiwaitbar. Use example 2 when this is a problem.
(Example 2 displays remaining expected time.)
vl=1:1000;
tmp1=onCleanup(@()multiwaitbar('loop1',-1));
P=0; %progress percentage
hwait=multiwaitbar('loop1',P,'Initialising...','name','Check');
t0=clock;
tm=t0;
for k=1:length(vl)
Pnew=round(100*(k)/length(vl));
if Pnew~=P
P=Pnew;
multiwaitbar('loop1',P,...
sprintf('Progress = %d%%',P));
pause(.01)
end
end