- 計算機仿真技術與CAD
- 李國勇主編
- 2034字
- 2019-01-09 15:00:26
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自動賦值。當從鍵盤輸入y或Y時(表示是),x自動賦為1值;當從鍵盤輸入n或N時(表示否),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