打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
MATLAB中的三种循环

FOR 循环

forend语句之间的{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循环

只要在表达式里的所有元素为真,就执行whileend 语句之间的{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

 

    这个例子表明了计算特殊MATLABeps的一种方法,它是一个可加到1,而使结果以有限精度大于1的最小数值。这里我们用大写EPS,因此MATLABeps的值不会被覆盖掉。在这个例子里,EPS1开始。只要(1+EPS)>1为真(非零),就一直求While循环内的命令值。由于EPS不断地被2除,EPS逐渐变小以致于EPS+1不大于1(记住,发生这种情况是因为计算机使用固定数的数值来表示数。MATLAB16位,因此,我们只能期望EPS接近10-16 在这一点上,(1+EPS)>1是假(),于是While循环结束。最后,EPS2相乘,因为最后除2使EPS太小。

IF-ELSE-END结构

如果在表达式中的所有元素为真(非零),那么就执行ifend语言之间的{commands}。在表达式包含有几个逻辑子表达式时,即使前一个子表达式决定了表达式的最后逻辑状态,仍要计算所有的子表达式。例如,

 

          » apples=10;         %  number of apples

          » cost=apples*25     %  cost of apples

          » if apples>5         %  give 20% discount for larger purchases

              cost=(1-20/100)*cost;

           end

          » cost

          cost =

             200

 

    假如有两个选择,If-Else-End结构是:

 

            if  expression

                commands evaluated if True

            else

                commands evaluated if False

            end

在这里,如果表达式为真,则执行第一组命令;如果表达式是假,则执行第二组命令。

 

    当有三个或更多的选择时,If-Else-End结构采用形式

         if expression1

            commands evaluated if expression1 is True

         elseif expression2

            commands evaluated if expression2 is True

         elseif expression3

            commands evaluated if expression3 is True

         elseif ……

           

         else

            commands evaluated if no other expression  is True

         end

 

    最后的这种形式,只和所碰到的、与第一个真值表达式相关的命令被执行;接下来的关系表达式不检验,跳过其余的If-Else-End结构。而且,最后的else命令可有可无。

 

    现在我们知道了如何用If-Else-End结构来决策,就有可能提出一种合理的方法来跳出或中断For循环和While循环。

                             » EPS=1;

                             » for num=1:1000

                                EPS=EPS/2;

                                if (1+EPS)<=1

                                 EPS=EPS*2

                                  break

                                 end

                               end

 

    这个例子演示了估算EPS的另一种方法。在这种情况下,For循环构造成要执行足够多的次数。If-Else-End结构检验要看EPS是否变得足够小。如果是,EPS2break命令强迫For循环提早结束,num=53

 

    在这个例子里,当执行break 语句时,MATLAB跳到循环外下一个语句。在现在情况下,它返回到MATLAB的提示符并显示EPS。如果一个break语句出现在一个嵌套的For循环或While循环结构里,那么MATLAB只跳出break所在的那个循环,不跳出整个嵌套结构。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
逻辑向量的引入与应用 | Matlab基础
Linux shell编程——if条件判断
4.8.2 While 循环
matlab 常用函数
matlab 编写M文件(函数)
实验一 MATLAB语言基础
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服