欢迎来到天天文库
浏览记录
ID:46847873
大小:79.00 KB
页数:8页
时间:2019-11-28
《MATLAB中的决策:控制流》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、MATLAB中的决策:控制流计算机编程语言和可编程计算器提供许多功能,它允许你根据决策结构控制命令执行流程。如果你以前己经使用过这些功能,对此就会很熟悉。相反,如杲不熟悉控制流,木章材料初看起來或许复杂些。如果这样,就慢慢來。控制流极其重要,因为它使过去的计算彩响将来的运算。MATLAB捉供三种决策或控制流结构。它们是:For循环,While循环和If-Else七nd结构。由丁•这些结构经常包含大量的MATLAB命令,故经常出现在M文件中,而不是ft接加在MATLAB提示符下。7.1For循环For循环允许一组命令以固定的和预定的次数重复。For循环的一般形式是:forx=array{comm
2、ands}end在foi•和end语句之间的{commands}按数组中的每一列执行一次。在每一次迭代屮,x被指定为数组的下一列,即在第n次循坏中,x=array(:,n)0例如,»forn=l:10x(n)=sin(n*pi/10);end»xx=Columns1through70.30900.58780.80900.95111.00000.95110.8090Columns8through100.58780.30900.0000换句话,第一语句是说:对n等于1到10,求所有语句的值,直至下一个end语句。第一次通过Foi•循环n=l,第二次,n=2,如此继续,直至n=10c在n=10以后,
3、For循环结束,然后求end语句后血的任何命令值,在这种情况下显示所计算的x的元素。For循环的其它重要方血是:1・For循环不能用For循环内重新赋值循环变量n来终止。»forn=l:10x(n)=sin(n*pi/10);n=10;end»xx=Columns1througli70.30900.58780.80900.95111.00000.95110.8090Columns8through100.58780.30900.00002•语句1:10是一•个标准的MATLAB数纽创建语句。在For•循环内接受任何有效的MATLAB数组。»data=[39456;165]45-116forn=d
4、atax=n(1)-n(2)endx=-4X=-7X=46X=13・For循环可按需要嵌套。forn=l:5form=5:-l:lA(n,m)=nA2+mA2;enddisp(n)end251()1726581320291013182534172025324126293441504.当有一个等效的数组方法来解给定的问题时,应避免用Foi•循环。例如,上面的第一个例子可被重写为»n=l:10;»x=sin(n*pi/10)x=Columns1through70.80900.95110.00001.00000.95110.80900.30900.5878Columns8through100.587
5、80.3090两种方法得出同样的结果,而后者执行更快,更直观,要求较少的输入。5.为了得到最大的速度,在Foi•循环(While循环)被执行之前,应预先分配数组。例如,前1侨所考虑的第一种情况,在For循环内每执行一次命令,变量x的大小增加1。迫使MATLAB每通过一次循环要花费时间对x分配更多的内存。为了消去这个步骤,For循环的例子应重写为»x=zeros(1,10);%preallocatedmemoryforx»forn=l:10x(n)=sin(n*pi/10);end现在,只有x(n)的值需耍改变。7.2While循环与For循环以固定次数求一组命令的值相反,While循环以不定的
6、次数求一组语句的值。While循环的一般形式是:whileexpression{commands}end只要在表达式里的所有元素为真,就执行、vhile和end语句之间的{commands}o通常,表达式的求值给出一个标量值,但数组值也同样有效。在数组情况下,所得到数组的所有元素必须都为真。考虑下列例子:»num=0;EPS=l;»while(1+EPS)>1EPS=EPS/2;num=num+l;end»numnum=53»EPS=2*EPSEPS=2.2204e-016这个例子表明了计算特殊MATLAB值eps的一种方法,它是一个可加到1,而使结果以有限精度大于1的最小数值。这里我们用大写
7、EPS,因此MATLAB的eps的值不会被覆盖掉。在这个例子里,EPS以1开始。只要(1+EPS)>1为真(非零),就一直求While循环内的命令值。由于EPS不断地被2除,EPS逐渐变小以致于EPS+1不人于1。(记住,发生这种情况是因为计算机使川固定数的数值来表示数。MATLAB川16位,因此,我们只能期望EPS接近1016«)在这一点上,(1+EPS)>1是假(零),于是While循环结朿。
此文档下载收益归作者所有