TA的每日心情 | 怒 2019-11-20 15:22 |
|---|
签到天数: 2 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
如果matlab在运行需要很长时间的程序,或者是要循环很多遍的时候,用户就不知道程序运行到了什么地方了。每次输出循环变量i是一个办法,但太丑陋了。Matlab提供了waitbar函数。简单运行如下:
3 ~2 e: }. ]' M1 b' w# y3 e" C- V- }h = waitbar(0,'Please wait...');+ k+ ~ }% _. `( c. h9 ~
n = 1000;
6 s: ~6 F, j4 I6 u. R1 Q `for i = 1:n
% w. V% j$ m9 o pause(0.01) % Do something important0,! M5 f4 P: y3 F% d& _+ N
waitbar(i/n,h)
' q2 P+ P/ S1 }8 z! gend1 g" L" q- ~) J2 u1 ?1 Z- v/ f
4 a) D. t/ \( \! q7 o! v' V: [
, W( g! [! Q$ ^2 s9 ]
. L$ J" R1 [& u7 R
P/ @% n7 p6 H% U& r. h# z; A这个函数有三个缺点:& x+ Z- M g+ F1 D% \* q% g
1. 没有显示完成的百分比
) M3 k$ ?$ e/ v6 |) M" R2. 没有显示剩余完成时间$ G0 F0 s, ?# f( c
3. 中途无法关闭waitbar
; N& l- i7 l, {2 A3 _. i3 j# T; @1 j/ U2 A
有人改进了这个函数
" A U7 a7 ? i* v& {# ~
1 ]" p) f1 m* l/ Zclear all;n = 1000;
2 o0 A! Y- ]" d( Y# ^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
: m3 }$ X& W; ]! t
) y8 ~ l" _' c/ f+ @) |
' A& T L! T% L& _ [ ]! E2 X3 |' r1 O, w- T, L
! e3 e5 r9 l/ M另外还可以去下载到另一个版本的waitbar2 P$ B7 S3 ~4 \$ k$ n3 P; |( i
h = waitbar(0,'Please wait...');
0 r1 D7 h! Z* [! b* M9 g- G/ Dn = 1000;
+ w9 ~8 w9 Y& V1 I% progressbar % Create figure and set starting time) Y$ y; I# p8 |( l1 c, I4 u, W: M
for i = 1:n b) v7 U* m1 ^* U, W+ {9 r9 s
pause(0.01) % Do something important0,7 w$ v9 r) z$ m! v2 Z. ?
waitbar(i/1000,h). [2 s h& {5 U$ G2 L' k$ n; l. Y
end
; ]! ?3 P' K& i, v! X; ?
) b8 r; i u# P7 A1 h5 `
/ Y& u E4 I. V9 P; f( q z9 [这个版本的一个问题就是,当中途关闭waitbar时,会有错误提示。5 W Q6 v" v0 i6 Y" R! J- z( J
推荐使用第一个版本的。
. d- m5 Q7 `' Z& S! R8 {1 g& J9 P6 j; G5 w \/ K: S
$ |! T7 f3 r b+ u! I* t6 F
|
|