TA的每日心情 | 怒 2019-11-20 15:22 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
如果matlab在运行需要很长时间的程序,或者是要循环很多遍的时候,用户就不知道程序运行到了什么地方了。每次输出循环变量i是一个办法,但太丑陋了。Matlab提供了waitbar函数。简单运行如下:4 x8 z" {: a# ]
h = waitbar(0,'Please wait...');
7 |6 o" M$ f' D: Z( F0 @: B4 \n = 1000;4 `0 u* I& M( p
for i = 1:n
) m4 T; C3 i/ {8 @! m" B6 l pause(0.01) % Do something important0,9 S9 m- s8 M" l) q l
waitbar(i/n,h)2 p" d6 D+ x. l+ f
end7 G" G$ J7 u: l- P; H
4 [# x+ _: P6 o6 A6 J. g: v% N
) V" @. @6 [" R' n; d+ ~. G
# V0 g* j$ b j4 r) _9 v) x* Q# \
; _+ y9 \9 h& U% V这个函数有三个缺点:: j/ D; k: y8 N9 R' g' V3 W
1. 没有显示完成的百分比4 t' [3 S$ M( L+ w
2. 没有显示剩余完成时间
8 I3 F& M$ S( U% j3. 中途无法关闭waitbar* F/ P, @: L) m2 o2 e
6 ^# k: { w" W; Q: L0 C
有人改进了这个函数
- `' E. j2 C8 U9 D$ V0 J' H- o1 h" o; R$ u* q
clear all;n = 1000;
7 L0 U7 k- x: v9 d% k. P+ n8 lfor i = 1:n stopBar= progressbar(x/n,0); if (stopBar) break; end end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%progressbar需要两个输入变量,第一个,完成百分比,第二个,位置。- [x, y] - Position of lower left corner in normalized units (0.0 - 1.0)
- 0 - Centered (Default)
- 1 - Upper right
- 2 - Upper left
- 3 - Lower left
- 4 - Lower right
- 5 - Random [x, y] position! D7 X0 }, C0 \- |4 [* E
, `$ I% W6 U8 i7 F
, H4 f, _/ v5 O
3 n* p' P a$ J. p% v
3 l/ [/ w. h5 x; z2 i) O3 z
另外还可以去下载到另一个版本的waitbar2 N" @- }8 D8 B: r- G7 E
h = waitbar(0,'Please wait...');
7 s- ^2 I" T3 W& h3 nn = 1000;
9 N9 W# c U' e# V" N% progressbar % Create figure and set starting time
. z- I; c9 U3 L. w. ~( sfor i = 1:n! T" U4 u: ^1 h3 [
pause(0.01) % Do something important0,1 n! L6 M$ s/ s( }$ V
waitbar(i/1000,h)2 U: V [% K( ^/ B
end
/ u% ?5 Q/ z* }5 a! A9 Y; T8 K
W1 N2 e" {/ n( m& S) q! M
7 J+ z8 Z+ L7 ^ `8 N7 y) q
这个版本的一个问题就是,当中途关闭waitbar时,会有错误提示。2 A0 f' ]# y! z2 ^. H" o1 Q
推荐使用第一个版本的。
) e3 G( I- O( ~. C# @8 {% z) T
" F/ w3 J% A- h2 a& {3 \
% r8 Y% W7 b( S0 M. y' M ? |
|