数学建模社区-数学中国
标题:
查看matlab程序运行进度
[打印本页]
作者:
墨雨金岚
时间:
2012-8-4 15:09
标题:
查看matlab程序运行进度
关于matlab中的waitbar(用于显示程序运行的进度)
% B1 k2 i/ f# E* ?. s9 h9 T4 R9 p
应用1:
! P5 L, p: L* \4 q2 W/ f
h = waitbar(x,'message'); %其中x必须为0到1之间的数,message为显示的信息,其实这个x大于1也可以啊,但是进度条总在满的状态,x是多少就对应进度条显示的比例是多少
- y7 T# [) v8 }3 o |! p
举例: hwait=waitbar(0,'请等待>>>>>>>>'); %这个0显示的是进度条的位置,因为是0,就在起始位置,还有就是这个hwait就是这个waitbar函数的句柄
$ w' L, j, S/ d1 `
得到:
! v9 `0 u' u" r. q& Q* Y- N
9 f$ v2 ?( \) d6 d( N- T! R
应用2:
: x, j0 l+ J' l+ G
waitbar(x,h,'updated message'); % x为显示的进度,必须在0到1之间;h为所建立的waitbar的句柄,updated message为实时显示的信息,此语句经常地用于for循环中
4 B7 s$ |. h' G8 P8 ~2 s( G
举例:
% |4 O4 c$ K% H- V* n
steps=100;
/ U: R- d& X5 `" i! W
hwait=waitbar(0,'请等待>>>>>>>>');
% x( m" {5 U1 i1 e
for k=1:steps
+ @0 x- c( F1 D m* S
if steps-k<=5
( N7 Q1 T4 P6 u0 t1 k
waitbar(k/steps,hwait,'即将完成'); %因为k/steps在逐步增大,所有进度条在往右走,另外,如果这个hwait不加上的话,会显示n多个进度条窗口,让你关闭不过来啊,加上之后就只显示一个了
1 T5 l( y3 x$ `' Q
pause(0.05); %延时一下啊 否则太快看不出来变化,一般有个0.01就能看出变化,但还是比较快的
' x9 p. H- k* V! J" w4 W
else
2 k* v" \2 d2 y% D1 F! \, Q- d+ b
str=['正在运行中',num2str(k),'%']; %用于显示如下图中“正在运行中46%”等比例数据
3 O3 U# z y1 h
waitbar(k/steps,hwait,str);
3 P( M' Z2 S* ~
pause(0.05); %pause(n)函数是程序停止n秒后继续,n可以使分数或小数。函数的分辨率根据平台而定,大多数平台都能满足0.01秒的精度。
3 [0 x( t' E1 G& b: B r3 w1 S5 d R
end
8 O' U. c9 n6 D" B
end
! Z {* w: v" n& j4 @! C
close(hwait); % 注意必须添加close函数,也就是说运行完成后让此进度条消失
5 m4 Z9 w5 {* H: r
结果如下所示:
! _2 N Z! G. z, R, N' n
显示正在运行中:
5 U2 H, x$ R0 [- u5 Z' f; }
# J8 F" c( L+ p, j" m, E2 ]) \4 e
显示即将完成:
# p2 x; [3 [0 o$ D5 D: J: i% S# b* E
! D! o- J w" v) [& O3 }
上例子中,当循环步骤刚好是100,但是如果循环不是100的时候,要作小小的改变,举例如下:
% h* }2 _6 s: v9 T0 n0 R6 z
steps=150;
! ]7 y: L. m/ t3 j
hwait=waitbar(0,'请等待>>>>>>>>');
: |9 J" k; D* E6 O8 }
step=steps/100; %这里step=1.5
# D5 G7 ?8 t# ^* t4 e6 g
for k=1:steps
3 f" T+ i' D t! U
if steps-k<=5
8 e; ~# d, `: e' E: B
waitbar(k/steps,hwait,'即将完成');
' a' h- P0 x" y8 D/ M3 ~
pause(0.05);
& b, R+ y4 H7 M( r) F. h
else
2 p4 A- L8 L0 V+ O
PerStr=fix(k/step); %fix是向0靠拢取整函数
% ?$ N- ?6 o ~
str=['正在运行中',num2str(PerStr),'%']; %把1到150的数换算到1到100内,看占的百分比
2 C7 z: k7 j; T9 N9 g
waitbar(k/steps,hwait,str);
% N1 r' W/ D; j+ v# G2 |" R
pause(0.05);
4 l" O, t4 h7 z+ H3 O* r( @
end
# z0 K* G& \* ~/ F$ n4 ~
end
9 }% O9 b! f: f5 i- B
close(hwait);
4 q7 k9 _1 f, A. L
结果和上面是一样的
; H& B, Q: K" `) Q2 m
作者:
shaox
时间:
2012-8-4 17:13
不错,有意思~~
作者:
墨雨金岚
时间:
2012-8-4 23:18
shaox 发表于 2012-8-4 17:13
. x! x6 Y, w* |/ _; j' Q, _
不错,有意思~~
% e9 y) ~; C; ~
呵呵,有道是:美文共欣赏,疑义相与析,是也
作者:
greyson
时间:
2013-8-19 11:21
好赞!谢谢楼主!
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5