TA的每日心情 | 怒 2019-11-20 15:22 |
|---|
签到天数: 2 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
如果matlab在运行需要很长时间的程序,或者是要循环很多遍的时候,用户就不知道程序运行到了什么地方了。每次输出循环变量i是一个办法,但太丑陋了。Matlab提供了waitbar函数。简单运行如下:/ [0 B) X" R% ?; H6 @+ q' M. X
h = waitbar(0,'Please wait...');
1 h6 g! v1 Z$ `* A) An = 1000;% {( Q) _- q0 a7 u1 u
for i = 1:n# \: Z3 m4 A4 z# |
pause(0.01) % Do something important0,
) R; G3 _. T' j waitbar(i/n,h)4 K2 Z3 \# L) K
end
& B9 V! S/ I: Q4 G
# _2 ?7 W A# E) x" ]
4 m! K/ T; u& p. @
$ U2 D' O; a d" g# m( I$ v; Y# e+ `0 X
这个函数有三个缺点:
$ H2 h# a% s* T+ K1. 没有显示完成的百分比
0 o+ y- }1 x: G2. 没有显示剩余完成时间8 c/ b( L8 k' v
3. 中途无法关闭waitbar8 j* Y O6 K7 k8 j* N3 l
$ _ O, Z# e. W+ h有人改进了这个函数4 ]8 A' r; }, {
8 ^6 f; h% W" _. Q9 Lclear all;n = 1000;
$ E+ h! M" J; @; P/ Hfor 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] position5 M; Q- s# }; j: T9 r! G! J( l
0 d( t8 F0 h2 J g
E$ G! ?5 R8 u* ^9 F1 C1 A6 Z- H& Y- \& W( D% ^; q' N: w+ K
) ~% N' E0 V9 D另外还可以去下载到另一个版本的waitbar
; `: L2 `! v6 w4 zh = waitbar(0,'Please wait...');
; E3 h; u/ B! W/ {3 W2 s! `% Nn = 1000;
- V0 @+ Z: F! U- g& {* b" ]% progressbar % Create figure and set starting time
! n) Y) k5 g( ?9 lfor i = 1:n
) \: |% v8 k( e pause(0.01) % Do something important0,! \2 H+ t5 _4 C; v# @% x% l
waitbar(i/1000,h)
N+ N, [9 m( v4 X* Y8 k$ Gend
1 \: K( e* E5 T7 a% s
/ @4 [$ S0 t% q& N" i& t
* G* b6 R1 s; h& M: N* t
这个版本的一个问题就是,当中途关闭waitbar时,会有错误提示。
6 {# s8 s% I/ s4 y! a9 C' S8 a推荐使用第一个版本的。0 |1 A# Z( P2 z% s( k7 \, s
1 C9 `4 A& w% q0 e, L# W/ M9 M$ C* S, |1 e9 d2 D) P5 a
|
|