TA的每日心情 | 怒 2019-11-20 15:22 |
|---|
签到天数: 2 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
如果matlab在运行需要很长时间的程序,或者是要循环很多遍的时候,用户就不知道程序运行到了什么地方了。每次输出循环变量i是一个办法,但太丑陋了。Matlab提供了waitbar函数。简单运行如下:( m4 x. z% Z( T% c1 u v {
h = waitbar(0,'Please wait...');
3 W2 i I0 |8 J$ J. w9 on = 1000;( l: O4 v$ n% Z( O
for i = 1:n
) ^5 b/ Z0 V/ j! B9 M% m8 x* | pause(0.01) % Do something important0,! X- R9 l& q& r+ n- ]" B
waitbar(i/n,h)
$ i$ @4 V- z! cend
, r1 R( E9 V6 N5 J4 c
5 U, d$ y4 f3 ~0 }
& P Y: j! r/ F$ t9 M5 @
7 w- y1 k/ P, t' B7 }, b% O9 `5 m' |3 _2 N- u
这个函数有三个缺点:) _2 _/ X0 m: i! R* T
1. 没有显示完成的百分比
! X7 \' s3 C0 A0 V4 p4 t2. 没有显示剩余完成时间
' K: M8 \/ @+ D# V: s a* t3. 中途无法关闭waitbar% T+ b' a" ?: [2 k: l+ M3 j/ O
3 t2 S( a/ m9 h' A8 f, `
有人改进了这个函数
# C# y' }1 x8 i6 i6 Y% _9 _5 G
7 s: a7 x. d+ s4 ^' _9 d1 f6 wclear all;n = 1000;; n, _+ q+ c" D4 J) S; Y" G
for 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# S& w: J& L P; B% s; W4 ~
% a8 b( Z8 Q/ ^+ M
! h: ]+ A7 C3 q* D
# V4 c1 B+ H# t- c& i9 B6 a! |8 u) O
另外还可以去下载到另一个版本的waitbar
' H0 K+ b& @) z7 ?9 O6 b7 r+ ch = waitbar(0,'Please wait...');4 {2 I) ]9 e( g: W, V+ ]( t
n = 1000;
3 ]. d5 v1 D! Y- N2 s% progressbar % Create figure and set starting time
, L+ y: F6 j' T0 i( H, ofor i = 1:n
8 h: A2 E+ I! z6 y: W% E/ Y/ E pause(0.01) % Do something important0,
5 g0 `% C+ D/ J7 a) B waitbar(i/1000,h)
8 \) q& V" n8 `! Kend* }: X) C: m$ T# d
% X! O. q$ ~- H1 g* ]! ]: S
4 r/ |+ S0 h" S+ x: {4 B9 T3 w这个版本的一个问题就是,当中途关闭waitbar时,会有错误提示。
5 A; ]) z0 Z- u7 h, Q# o推荐使用第一个版本的。
, U% e9 g: x5 T; X! V3 |( X7 g* T1 N8 x+ o
& v5 y& v. p% A2 f |
|