» for n=1:10) e, {. v4 G' k m2 ^' }: d. M b1 p
x(n)=sin(n*pi/10); : G1 m& P- j. @7 i n=10;0 S E( h2 o, U! U
end * C) z1 c* z; q& n) a' b- v7 J- h& O3 @
当有一个等效的数组方法来解给定的问题时,应避免用For循环。例如,上面的第一个例子可被重写为; K) q7 v+ W# s
0 J" x- ]' z+ I
» n=1:10;1 L- Y& n- m4 t# N B
» x=sin(n*pi/10)8 ^/ ?5 D% v, j" C0 X; [/ i4 h
x = 6 T, T+ a j: N; W K$ o& U9 L Columns 1 through 7 6 X# q. T- k* i 0.3090 0.5878 0.8090 0.9511 1.0000 0.9511 0.80908 `- C' o2 D- j/ Y. ?
Columns 8 through 10 1 D% c. ^8 X. Q5 [, I$ U 0.5878 0.3090 0.0000 + u# O1 d. K4 \; X 5 R- D/ i/ t* T两种方法得出同样的结果,而后者执行更快,更直观,要求较少的输入。 # k2 \7 I- h$ ~1 x2 E% Z6 |! E. j6 Y& x 5. 为了得到最大的速度,在For循环(While循环)被执行之前,应预先分配数组。例如,前面所考虑的第一种情况,在For循环内每执行一次命令,变量x的大小增加1。迫使MATLAB每通过一次循环要花费时间对x分配更多的内存。为了消去这个步骤,For循环的例子应重写为 5 @8 Q! r6 e" V; Q ~0 O! r6 y) G' L
»x=zeros(1,10); % preallocated memory for x( |: d# n$ m9 A1 Z8 U7 r' d
» for n=1:10+ c0 o; P. @4 L- U& p
x(n)=sin(n*pi/10); ' Z3 b' I) Q% r& k4 J- m$ d end 9 v# Z& D! C$ i, ?3 I + L s- s C5 }9 r; U现在,只有x(n)的值需要改变。