三个例子讲解 MATLAB 三种循环FOR 循环在 for 和 end 语句之间的{commands}按数组中的每一列执行一次
在每一次迭代中,x 被指定为数组的下一列,即在第 n 次循环中,x=array(:, n)
如» for n=1:10 x(n)=sin(n*pi/10); end当有一个等效的数组方法来解给定的问题时,应避开用 For 循环
例如,上面的例子可被重写为 » n=1:10; » x=sin(n*pi/10)第二种方式执行速度更快
为了得到最大的速度,在 For 循环(While 循环)被执行之前,应预先分配数组
WHILE 循环 只要在表达式里的所有元素为真,就执行 while 和 end 语句之间的{commands}
通常,表达式的求值给出一个标量值,但数组值也同样有效
在数组情况下,所得到数组的所有元素必须都为真
考虑下列例子: » num=0;EPS=1; » while (1+EPS)>1 EPS=EPS/2; num=num+1; end » num num = 53 » EPS=2*EPS EPS = 2
2204e-016 这个例子表明了计算特别 MATLAB 值 eps 的一种方法,它是一个可加到 1,而使结果以有限精度大于 1 的最小数值
这里我们用大写 EPS,因此 MATLAB 的 eps 的值不会被覆盖掉
在这个例子里,EPS 以 1 开始
只要(1+EPS)>1 为真(非零),就一直求 While 循环内的命令值
由于 EPS 不断地被 2 除,EPS 逐渐变小以致于 EPS+1 不大于 1
(记住,发生这种情况是因为计算机使用固定数的数值来表示数
MATLAB 用 16 位,因此,我们只能期望 EPS 接近 10-16
) 在这一点上,(1+EPS)>1 是假(零),于是 While 循环结束
最后,EPS 与 2 相