查看matlab程序运行进度
(2013-11-15 01:38:19)分类: MATLAB |
关于matlab中的waitbar(用于显示程序运行的进度)
应用1:4 r) @- n1 @0 e" |7 h: [3 ~
h = waitbar(x,'message'); %其中x必须为0到1之间的数,message为显示的信息,其实这个x大于1也可以啊,但是进度条总在满的状态,x是多少就对应进度条显示的比例是多少
举例: hwait=waitbar(0,'请等待>>>>>>>>'); %这个0显示的是进度条的位置,因为是0,就在起始位置,还有就是这个hwait就是这个waitbar函数的句柄8 i0 {; f- q8 k8 ^. j% H5 c
得到:
- \( t: |8 z; h3 _" C( A
应用2:# @; }: Q- e0 t
waitbar(x,h,'updated message'); % x为显示的进度,必须在0到1之间;h为所建立的waitbar的句柄,updated message为实时显示的信息,此语句经常地用于for循环中* V+ O$ e' w' g5 v' L
举例:" A2 W+ [- E$ l0 `0 K
steps=100;# ]) J8 p# b7 x
hwait=waitbar(0,'请等待>>>>>>>>');
for k=1:steps) |7 {* V9 J1 k- G/ R: X- c
if steps-k<=5
waitbar(k/steps,hwait,'即将完成'); %因为k/steps在逐步增大,所有进度条在往右走,另外,如果这个hwait不加上的话,会显示n多个进度条窗口,让你关闭不过来啊,加上之后就只显示一个了
pause(0.05); %延时一下啊 否则太快看不出来变化,一般有个0.01就能看出变化,但还是比较快的- b' y. n" ?6 ~- ^& ]5 i
else
str=['正在运行中',num2str(k),'%']; %用于显示如下图中“正在运行中46%”等比例数据
waitbar(k/steps,hwait,str);$ Y- q+ Y2 y: I" l% f2 p
pause(0.05); %pause(n)函数是程序停止n秒后继续,n可以使分数或小数。函数的分辨率根据平台而定,大多数平台都能满足0.01秒的精度。$ m# s2 M4 P1 q) v7 L9 ~
end
end- K' ?# W9 s' e; `% a
close(hwait); % 注意必须添加close函数,也就是说运行完成后让此进度条消失
结果如下所示:: s% y( C& u) V0 b
显示正在运行中:& J$ t" h3 i. S( v8 S! T' t% m# ^+ C
5 }/ q6 N5 l* M( M
显示即将完成:
上例子中,当循环步骤刚好是100,但是如果循环不是100的时候,要作小小的改变,举例如下:+ z8 B z& h% T7 g5 o# |!
z
steps=150;
hwait=waitbar(0,'请等待>>>>>>>>');
step=steps/100; %这里step=1.54 K- k7 X7 P6 y \6 l1 A0
M
for k=1:steps' u; S# t" R; `1 @
if steps-k<=5. |- U9 ]+ z, K5 J: U+ p& u8 _
waitbar(k/steps,hwait,'即将完成');3 F; c5 B* v- G& s
pause(0.05);4 {5 p8 H$ p6 r& m0 S
else
PerStr=fix(k/step); %fix是向0靠拢取整函数
str=['正在运行中',num2str(PerStr),'%']; %把1到150的数换算到1到100内,看占的百分比- [2 C* @3 h7 t* D( d
waitbar(k/steps,hwait,str);2 u- H+ c' ?" h5 r
pause(0.05);
end
end u(
t0 j- `; y8 e) p7 e4 w( v0 `6 Q
close(hwait);
结果和上面是一样的
应用1:4 r) @- n1 @0 e" |7 h: [3 ~
h = waitbar(x,'message'); %其中x必须为0到1之间的数,message为显示的信息,其实这个x大于1也可以啊,但是进度条总在满的状态,x是多少就对应进度条显示的比例是多少
举例: hwait=waitbar(0,'请等待>>>>>>>>'); %这个0显示的是进度条的位置,因为是0,就在起始位置,还有就是这个hwait就是这个waitbar函数的句柄8 i0 {; f- q8 k8 ^. j% H5 c
得到:
- \( t: |8 z; h3 _" C( A
应用2:# @; }: Q- e0 t
waitbar(x,h,'updated message'); % x为显示的进度,必须在0到1之间;h为所建立的waitbar的句柄,updated message为实时显示的信息,此语句经常地用于for循环中* V+ O$ e' w' g5 v' L
举例:" A2 W+ [- E$ l0 `0 K
steps=100;# ]) J8 p# b7 x
hwait=waitbar(0,'请等待>>>>>>>>');
for k=1:steps) |7 {* V9 J1 k- G/ R: X- c
if steps-k<=5
waitbar(k/steps,hwait,'即将完成'); %因为k/steps在逐步增大,所有进度条在往右走,另外,如果这个hwait不加上的话,会显示n多个进度条窗口,让你关闭不过来啊,加上之后就只显示一个了
pause(0.05); %延时一下啊 否则太快看不出来变化,一般有个0.01就能看出变化,但还是比较快的- b' y. n" ?6 ~- ^& ]5 i
else
str=['正在运行中',num2str(k),'%']; %用于显示如下图中“正在运行中46%”等比例数据
waitbar(k/steps,hwait,str);$ Y- q+ Y2 y: I" l% f2 p
pause(0.05); %pause(n)函数是程序停止n秒后继续,n可以使分数或小数。函数的分辨率根据平台而定,大多数平台都能满足0.01秒的精度。$ m# s2 M4 P1 q) v7 L9 ~
end
end- K' ?# W9 s' e; `% a
close(hwait); % 注意必须添加close函数,也就是说运行完成后让此进度条消失
结果如下所示:: s% y( C& u) V0 b
显示正在运行中:& J$ t" h3 i. S( v8 S! T' t% m# ^+ C
5 }/ q6 N5 l* M( M
显示即将完成:
上例子中,当循环步骤刚好是100,但是如果循环不是100的时候,要作小小的改变,举例如下:+ z8 B
steps=150;
hwait=waitbar(0,'请等待>>>>>>>>');
step=steps/100; %这里step=1.54 K- k7 X7 P6 y
for k=1:steps' u; S# t" R; `1 @
if steps-k<=5. |- U9 ]+ z, K5 J: U+ p& u8 _
waitbar(k/steps,hwait,'即将完成');3 F; c5 B* v- G& s
pause(0.05);4 {5 p8 H$ p6 r& m0 S
else
PerStr=fix(k/step); %fix是向0靠拢取整函数
str=['正在运行中',num2str(PerStr),'%']; %把1到150的数换算到1到100内,看占的百分比- [2 C* @3 h7 t* D( d
waitbar(k/steps,hwait,str);2 u- H+ c' ?" h5 r
pause(0.05);
end
end
close(hwait);
结果和上面是一样的
前一篇:[转载]2013年11月12日
后一篇:[转载]多元线性回归