计算机仿真技术与CAD
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.3 MATLAB的控制语句

MATLAB是一个功能极强的高度集成化程序设计语言,它具备一般程序设计语言的基本语句结构,并且它的功能更强,由它编写出来的程序结构简单,可读性强。和其他高级语言一样,MATLAB也提供了条件转移语句、循环语句等一些常用的控制语句,从而使得MATLAB语言的编程显得十分灵活。

1.3.1 循环语句

在实际计算中,经常会遇到许多有规律的重复计算,此时就要根据循环条件对某些语句重复执行。MATLAB中包括两种循环语句:for语句和while语句。

1.for语句的基本格式

在MATLAB中,for语句的基本命令格式为

                    for  循环变量=表达式1:表达式3:表达式2
                        循环语句组
                    end

在MATLAB的循环语句基本格式中,循环变量可以取做任何MATLAB变量;表达式1、表达式2和表达式3的定义和C语言相似,即首先将循环变量的初值赋成表达式1的值,然后判断循环变量的值,如果此时循环变量的值介于表达式1和表达式2的值之间,则执行循环体中的语句,否则结束循环语句的执行。执行完一次循环体中的语句之后,则会将循环变量自增一个表达式3的值,然后再判断循环变量是否介于表达式1和表达式2之间,如果满足就再执行循环体直至不满足为止,这时将结束循环语句的执行,而继续执行后面的语句。如果表达式3的值为1,则可省略表达式3。

例1-3】 求的值。

MATLAB程序ex1_3_1.m如下。

            %ex1  3_1.m
            mysum=0;
                for i=1:100
                    mysum=mysum+i;
                end
            mysum

根据以上方法编写MATLAT的程序文件(M文件)ex1_3_1.m,其运行结果显示

      mysum =
              5050

实际编程中,在MATLAB下采用循环语句会降低其执行速度,所以上面的程序可以由下面的命令来代替,以提高运行速度。

      >>i=1:100;mysum=sum(i)

其中,sum()为内部函数,其作用是求出i向量的各个元素之和。

2.while语句的基本结构

在MATLAB中,while语句的基本命令格式为

                              while(条件式)
                                循环体条件组
                              end

其执行方式为,若条件式中的条件成立,则执行循环体的内容;执行后再判断表达式是否仍然成立,如果表达式不成立,则跳出循环,向下继续执行。

例如,对于上面的例1-3,如果改用while循环语句,则可以编写下面的程序:

            %ex1  3  2.m
            mysum =0;i=1;
            while(i<=100)
                mysum =mysum +i;i=i+1;
            end
            mysum

MATLAB提供的循环语句for和while是允许多级嵌套的,而且它们之间也允许相互嵌套,这和C语言等高级程序设计语言是一致的。

1.3.2 程序流控制语句

在程序设计语言中,经常会遇到提前中止循环、跳出子程序、显示执行过程等,此时就要用到以下控制程序流命令。

(1)echo命令

一般来说当一个M文件运行时,文件中的命令不在屏幕上显示出来;而利用echo命令可以使M文件在运行时把其中的命令显示在工作空间中,这对于调试、演示等很有用。其命令格式为

              echo on               %显示其后所有执行的命令文件的指令;
              echo off              %不显示其后所有执行的命令文件的指令;
              echo                  %在上述两种情况下进行切换;
              echo filename on      %显示由filename指定的M文件的执行命令;
              echo filename off     %不显示由filename指定的M文件的执行命令;
              echo on all           %显示其后的所有M文件的执行命令;
              echo off all          %不显示其后的所有M文件的执行命令。

(2)break命令

在MATLAB中,break命令经常与for或while等语句一起使用,其作用就是中止本次循环,跳出最内层的循环。使用break命令可以不必等到循环的自然结束,而是根据条件,遇到break命令后强行退出循环过程。

(3)continue命令

在MATLAB中,continue命令也经常与for或while等语句一起使用,其作用是结束本次循环,即跳过循环体下面尚未执行的命令,接着进行下一次是否执行循环的判断。

(4)pause命令

pause()命令使用户暂停运行程序,当再按任一键时恢复执行。其中pause(n)中的n为等待的秒数。

(5)return命令

return命令能使当前正在运行的函数正常退出,并返回调用它的函数,继续运行。

1.3.3 条件转移语句

在程序设计中,经常要根据一定的条件来执行不同的命令。当某些条件满足时,只执行其中的某个命令或某些命令。在MATLAB中,条件转移语句包括:if-else-end语句和switch-case-otherwise语句。

1.if-else-end语句的基本格式

在MATLAB中,最简单的条件结构,即if-end语句的命令格式为

                                  if expression
                                      statements
                                  end

当给出的条件式expression成立时,则执行该条件块结构中的语句内容statements,执行完之后继续向下执行;若条件不成立,则跳出条件块而直接向下执行。

例1-4】 求满足的最小m值。

MATLAB程序ex1-4.m如下。

            %ex1  4.m
            mysum=0;
            for m=1:1000
              mysum=mysum+m;
              if(mysum>1000)break;end
            end
            m

运行结果显示:

      m =
            45

MATLAB还提供了其他两种条件结构:if-else-end格式和if-else if-end格式,这两种格式的调用方法分别为

                                  if expression
                                      statements1
                                  else
                                      statements2
                                  end

                                  if expression1
                                      statements1
                                  else if expression2
                                      statements2
                                  else if expression3
                                      statements3
                                      ︙
                                  end

例1-5】 如果想对一个变量x自动赋值。当从键盘输入yY时(表示是),x自动赋为1值;当从键盘输入nN时(表示否),x自动赋为0值;输入其他字符时中止程序。

要实现这样的功能,则可由下列的while循环程序来执行。

            %ex1  5.m
            ikey=0;
            while(ikey==0)
              s1=input(′若给x赋值请输入[y/n]?′,′s′);
              if(s1==′y′|s1==′Y′),
                ikey=1;x=1
              else if(s1==′n′|s1==′N′)ikey=1;x=0,end
                break
              end
            end

2.switch-case-otherwise语句的基本格式

MATLAB中switch-case-otherwise语句的调用格式为

                              switch switch-expression
                              case case-expression1
                                    statements1;
                              case case-expression2
                                    statements2;
                              case case-expression3
                                    statements3;
                                    ︙
                              otherwise
                                    statementsn;
                              end

switch-case-otherwise语句中,switch-expression给出了开关条件:当有case-expression与之匹配时,就执行其后的语句;如果没有case-expression与之匹配,就执行otherwise后面的语句。在执行过程中,只有一个case命令被执行。当执行完命令后,程序就跳出分支结构,执行end后面的命令。

例如,对于以下MATLAB函数文件myfun.m。

            function f=myfun(n)
            switch n
            case 0
              f=1;
            case 1
              f=2;
            otherwise
              f=8;
            end

在MATLAB命令窗口中输入以下命令:

      >>y=myfun(1)

结果显示:

      y =
          2