官术网_书友最值得收藏!

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
主站蜘蛛池模板: 呼伦贝尔市| 滕州市| 邹平县| 乃东县| 即墨市| 蚌埠市| 皋兰县| 静安区| 和平县| 灵寿县| 广州市| 永胜县| 岢岚县| 洛阳市| 民乐县| 兰溪市| 仁化县| 荥经县| 通化县| 泗洪县| 曲阜市| 遵义县| 望都县| 大庆市| 大安市| 且末县| 桃园县| 梁河县| 黄梅县| 封丘县| 绥化市| 白沙| 牟定县| 山东省| 苏尼特左旗| 连南| 鹤峰县| 玉门市| 花垣县| 察雅县| 裕民县|