% progressbar - display a progress bar % % progressbar(n,N,w); % % displays the progress of n out of N. % n should start at 1. % w is the width of the bar (default w=20). % % Copyright (c) 2010, Gabriel Peyre % All rights reserved. % % Redistribution and use in source and binary forms, with or without % modification, are permitted provided that the following conditions are % met: % % * Redistributions of source code must retain the above copyright % notice, this list of conditions and the following disclaimer. % * Redistributions in binary form must reproduce the above copyright % notice, this list of conditions and the following disclaimer in % the documentation and/or other materials provided with the distribution % % THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" % AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE % IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE % ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE % LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR % CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF % SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS % INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN % CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) % ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE % POSSIBILITY OF SUCH DAMAGE. function progressbar(n,N,w) if nargin<3 w = 20; end % progress char cprog = '.'; cprog1 = '*'; % begining char cbeg = '['; % ending char cend = ']'; p = min( floor(n/N*(w+1)), w); global pprev; if isempty(pprev) pprev = -1; end if not(p==pprev) ps = repmat(cprog, [1 w]); ps(1:p) = cprog1; ps = [cbeg ps cend]; if n>1 % clear previous string fprintf( repmat('\b', [1 length(ps)]) ); end fprintf(ps); end pprev = p; if n==N fprintf('\n'); end end