热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

matlab进度条显示

在日常matlab计算时候,考虑到计算漫长的等待,要是提前知道计算时长那该多好测试代码m4;n3;p100;progressbar(1,2,3

在日常matlab计算时候,考虑到计算漫长的等待,要是提前知道计算时长那该多好

测试代码

m=4;
n=3;
p=100;
progressbar('1','2','3')
for i=1:mfor j=1:nfor k=1:ppause(0.01)face3=k/p;face2=((j-1)+face3)/n;face1=((i-1)+face2)/m;progressbar(face1,face2,face3)endend
end

progressbar进度条函数

function progressbar(varargin)
% Description:
% progressbar() provides an indication of the progress of some task using
% graphics and text. Calling progressbar repeatedly will update the figure and
% automatically estimate the amount of time remaining.
% This implementation of progressbar is intended to be extremely simple to use
% while providing a high quality user experience.
%
% Features:
% - Can add progressbar to existing m-files with a single line of code.
% - Supports multiple bars in one figure to show progress of nested loops.
% - Optional labels on bars.
% - Figure closes automatically when task is complete.
% - Only one figure can exist so old figures don't clutter the desktop.
% - Remaining time estimate is accurate even if the figure gets closed.
% - Minimal execution time. Won't slow down code.
% - Randomized color. When a programmer gets bored...
%
% Example Function Calls For Single Bar Usage:
% progressbar % Initialize/reset
% progressbar(0) % Initialize/reset
% progressbar('Label') % Initialize/reset and label the bar
% progressbar(0.5) % Update
% progressbar(1) % Close
%
% Example Function Calls For Multi Bar Usage:
% progressbar(0, 0) % Initialize/reset two bars
% progressbar('A', '') % Initialize/reset two bars with one label
% progressbar('', 'B') % Initialize/reset two bars with one label
% progressbar('A', 'B') % Initialize/reset two bars with two labels
% progressbar(0.3) % Update 1st bar
% progressbar(0.3, []) % Update 1st bar
% progressbar([], 0.3) % Update 2nd bar
% progressbar(0.7, 0.9) % Update both bars
% progressbar(1) % Close
% progressbar(1, []) % Close
% progressbar(1, 0.4) % Close
%
% Notes:
% For best results, call progressbar with all zero (or all string) inputs
% before any processing. This sets the proper starting time reference to
% calculate time remaining.
% Bar color is choosen randomly when the figure is created or reset. Clicking
% the bar will cause a random color change.
%
% Demos:
% % Single bar
% m = 500;
% progressbar % Init single bar
% for i = 1:m
% pause(0.01) % Do something important
% progressbar(i/m) % Update progress bar
% end
%
% % Simple multi bar (update one bar at a time)
% m = 4;
% n = 3;
% p = 100;
% progressbar(0,0,0) % Init 3 bars
% for i = 1:m
% progressbar([],0) % Reset 2nd bar
% for j = 1:n
% progressbar([],[],0) % Reset 3rd bar
% for k = 1:p
% pause(0.01) % Do something important
% progressbar([],[],k/p) % Update 3rd bar
% end
% progressbar([],j/n) % Update 2nd bar
% end
% progressbar(i/m) % Update 1st bar
% end
%
% % Fancy multi bar (use labels and update all bars at once)
% m = 4;
% n = 3;
% p = 100;
% progressbar('Monte Carlo Trials','Simulation','Component') % Init 3 bars
% for i = 1:m
% for j = 1:n
% for k = 1:p
% pause(0.01) % Do something important
% % Update all bars
% frac3 = k/p;
% frac2 = ((j-1) + frac3) / n;
% frac1 = ((i-1) + frac2) / m;
% progressbar(frac1, frac2, frac3)
% end
% end
% end
%
% Author:
% Steve Hoelzer
%
% Revisions:
% 2002-Feb-27 Created function
% 2002-Mar-19 Updated title text order
% 2002-Apr-11 Use floor instead of round for percentdone
% 2002-Jun-06 Updated for speed using patch (Thanks to waitbar.m)
% 2002-Jun-19 Choose random patch color when a new figure is created
% 2002-Jun-24 Click on bar or axes to choose new random color
% 2002-Jun-27 Calc time left, reset progress bar when fractiondone == 0
% 2002-Jun-28 Remove extraText var, add position var
% 2002-Jul-18 fractiondone input is optional
% 2002-Jul-19 Allow position to specify screen coordinates
% 2002-Jul-22 Clear vars used in color change callback routine
% 2002-Jul-29 Position input is always specified in pixels
% 2002-Sep-09 Change order of title bar text
% 2003-Jun-13 Change 'min' to 'm' because of built in function 'min'
% 2003-Sep-08 Use callback for changing color instead of string
% 2003-Sep-10 Use persistent vars for speed, modify titlebarstr
% 2003-Sep-25 Correct titlebarstr for 0% case
% 2003-Nov-25 Clear all persistent vars when percentdone = 100
% 2004-Jan-22 Cleaner reset process, don't create figure if percentdone = 100
% 2004-Jan-27 Handle incorrect position input
% 2004-Feb-16 Minimum time interval between updates
% 2004-Apr-01 Cleaner process of enforcing minimum time interval
% 2004-Oct-08 Seperate function for timeleftstr, expand to include days
% 2004-Oct-20 Efficient if-else structure for sec2timestr
% 2006-Sep-11 Width is a multiple of height (don't stretch on widescreens)
% 2010-Sep-21 Major overhaul to support multiple bars and add labels
%persistent progfig progdata lastupdate% Get inputs
if nargin > 0input = varargin;ninput = nargin;
else% If no inputs, init with a single barinput = {0};ninput = 1;
end% If task completed, close figure and clear vars, then exit
if input{1} == 1if ishandle(progfig)delete(progfig) % Close progress barendclear progfig progdata lastupdate % Clear persistent varsdrawnowreturn
end% Init reset flag
resetflag = false;% Set reset flag if first input is a string
if ischar(input{1})resetflag = true;
end% Set reset flag if all inputs are zero
if input{1} == 0% If the quick check above passes, need to check all inputsif all([input{:}] == 0) && (length([input{:}]) == ninput)resetflag = true;end
end% Set reset flag if more inputs than bars
if ninput > length(progdata)resetflag = true;
end% If reset needed, close figure and forget old data
if resetflagif ishandle(progfig)delete(progfig) % Close progress barendprogfig = [];progdata = []; % Forget obsolete data
end% Create new progress bar if needed
if ishandle(progfig)
else % This strange if-else works when progfig is empty (~ishandle() does not)% Define figure size and axes padding for the single bar caseheight = 0.03;width = height * 8;hpad = 0.02;vpad = 0.25;% Figure out how many bars to drawnbars = max(ninput, length(progdata));% Adjust figure size and axes padding for number of barsheightfactor = (1 - vpad) * nbars + vpad;height = height * heightfactor;vpad = vpad / heightfactor;% Initialize progress bar figureleft = (1 - width) / 2;bottom = (1 - height) / 2;progfig = figure(...'Units', 'normalized',...'Position', [left bottom width height],...'NumberTitle', 'off',...'Resize', 'off',...'MenuBar', 'none' );% Initialize axes, patch, and text for each barleft = hpad;width = 1 - 2*hpad;vpadtotal = vpad * (nbars + 1);height = (1 - vpadtotal) / nbars;for ndx = 1:nbars% Create axes, patch, and textbottom = vpad + (vpad + height) * (nbars - ndx);progdata(ndx).progaxes = axes( ...'Position', [left bottom width height], ...'XLim', [0 1], ...'YLim', [0 1], ...'Box', 'on', ...'ytick', [], ...'xtick', [] );progdata(ndx).progpatch = patch( ...'XData', [0 0 0 0], ...'YData', [0 0 1 1] );progdata(ndx).progtext = text(0.99, 0.5, '', ...'HorizontalAlignment', 'Right', ...'FontUnits', 'Normalized', ...'FontSize', 0.7 );progdata(ndx).proglabel = text(0.01, 0.5, '', ...'HorizontalAlignment', 'Left', ...'FontUnits', 'Normalized', ...'FontSize', 0.7 );if ischar(input{ndx})set(progdata(ndx).proglabel, 'String', input{ndx})input{ndx} = 0;end% Set callbacks to change color on mouse clickset(progdata(ndx).progaxes, 'ButtonDownFcn', {@changecolor, progdata(ndx).progpatch})set(progdata(ndx).progpatch, 'ButtonDownFcn', {@changecolor, progdata(ndx).progpatch})set(progdata(ndx).progtext, 'ButtonDownFcn', {@changecolor, progdata(ndx).progpatch})set(progdata(ndx).proglabel, 'ButtonDownFcn', {@changecolor, progdata(ndx).progpatch})% Pick a random color for this patchchangecolor([], [], progdata(ndx).progpatch)% Set starting time referenceif ~isfield(progdata(ndx), 'starttime') || isempty(progdata(ndx).starttime)progdata(ndx).starttime = clock;endend% Set time of last update to ensure a redrawlastupdate = clock - 1;end% Process inputs and update state of progdata
for ndx = 1:ninputif ~isempty(input{ndx})progdata(ndx).fractiondone = input{ndx};progdata(ndx).clock = clock;end
end% Enforce a minimum time interval between graphics updates
myclock = clock;
if abs(myclock(6) - lastupdate(6)) <0.01 % Could use etime() but this is fasterreturn
end% Update progress patch
for ndx &#61; 1:length(progdata)set(progdata(ndx).progpatch, &#39;XData&#39;, ...[0, progdata(ndx).fractiondone, progdata(ndx).fractiondone, 0])
end% Update progress text if there is more than one bar
if length(progdata) > 1for ndx &#61; 1:length(progdata)set(progdata(ndx).progtext, &#39;String&#39;, ...sprintf(&#39;%1d%%&#39;, floor(100*progdata(ndx).fractiondone)))end
end% Update progress figure title bar
if progdata(1).fractiondone > 0runtime &#61; etime(progdata(1).clock, progdata(1).starttime);timeleft &#61; runtime / progdata(1).fractiondone - runtime;timeleftstr &#61; sec2timestr(timeleft);titlebarstr &#61; sprintf(&#39;%2d%% %s remaining&#39;, ...floor(100*progdata(1).fractiondone), timeleftstr);
elsetitlebarstr &#61; &#39; 0%&#39;;
end
set(progfig, &#39;Name&#39;, titlebarstr)% Force redraw to show changes
drawnow% Record time of this update
lastupdate &#61; clock;% ------------------------------------------------------------------------------
function changecolor(h, e, progpatch) %#ok
% Change the color of the progress bar patch% Prevent color from being too dark or too light
colormin &#61; 1.5;
colormax &#61; 2.8;thiscolor &#61; rand(1, 3);
while (sum(thiscolor) colormax)thiscolor &#61; rand(1, 3);
endset(progpatch, &#39;FaceColor&#39;, thiscolor)% ------------------------------------------------------------------------------
function timestr &#61; sec2timestr(sec)
% Convert a time measurement from seconds into a human readable string.% Convert seconds to other units
w &#61; floor(sec/604800); % Weeks
sec &#61; sec - w*604800;
d &#61; floor(sec/86400); % Days
sec &#61; sec - d*86400;
h &#61; floor(sec/3600); % Hours
sec &#61; sec - h*3600;
m &#61; floor(sec/60); % Minutes
sec &#61; sec - m*60;
s &#61; floor(sec); % Seconds% Create time string
if w > 0if w > 9timestr &#61; sprintf(&#39;剩余&#xff1a;%d 周&#39;, w);elsetimestr &#61; sprintf(&#39;剩余&#xff1a;%d 周, %d 天&#39;, w, d);end
elseif d > 0if d > 9timestr &#61; sprintf(&#39;剩余&#xff1a;%d 天&#39;, d);elsetimestr &#61; sprintf(&#39;剩余&#xff1a;%d 天, %d 小时&#39;, d, h);end
elseif h > 0if h > 9timestr &#61; sprintf(&#39;剩余&#xff1a;%d 小时&#39;, h);elsetimestr &#61; sprintf(&#39;剩余&#xff1a;%d 小时, %d 分钟&#39;, h, m);end
elseif m > 0if m > 9timestr &#61; sprintf(&#39;剩余&#xff1a;%d 分&#39;, m);elsetimestr &#61; sprintf(&#39;剩余&#xff1a;%d 分钟, %d 秒&#39;, m, s);end
elsetimestr &#61; sprintf(&#39;剩余&#xff1a;%d 秒&#39;, s);
end

运行结果&#xff1a;


推荐阅读
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 从零学Java(10)之方法详解,喷打野你真的没我6!
    本文介绍了从零学Java系列中的第10篇文章,详解了Java中的方法。同时讨论了打野过程中喷打野的影响,以及金色打野刀对经济的增加和线上队友经济的影响。指出喷打野会导致线上经济的消减和影响队伍的团结。 ... [详细]
author-avatar
aizhezhe
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有