2014春季學期-matlab語言程序設計與應用控制系統(tǒng)cad lesson_第1頁
2014春季學期-matlab語言程序設計與應用控制系統(tǒng)cad lesson_第2頁
2014春季學期-matlab語言程序設計與應用控制系統(tǒng)cad lesson_第3頁
2014春季學期-matlab語言程序設計與應用控制系統(tǒng)cad lesson_第4頁
2014春季學期-matlab語言程序設計與應用控制系統(tǒng)cad lesson_第5頁
已閱讀5頁,還剩63頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、Matlab語言與控制系統(tǒng)CAD任課教師:鄔樹楠大連理工大學航空航天學院工業(yè)裝備結構分析國家重點實驗室Lesson 3Previously on Lesson 3 (1)Matlab的M文件 (2) Matlab命令的執(zhí)行方式 交互式的命令執(zhí)行方式在命令窗口中逐條輸入命令,Matlab逐條進行解釋、執(zhí)行;但執(zhí)行過程不能保留。M文件的程序執(zhí)行方式將命令編寫成程序,存儲在文件中(即M文件),當運行該程序后,Matlab會自動執(zhí)行文件中的命令。M文件的建立: (1)菜單項File New M-File; (2)在命令窗口中輸入edit; (3)工具欄上的 New M-FileM文件的打開與保存: (

2、1)菜單項File Open M文件名; (2)在命令窗口中輸入edit M文件名; (3)工具欄上的 Open file (4)File Save or Save asM文件的分類: M文件有兩種即腳本文件/命令文件(Script File)和函數(shù)文件(Function File)。 主要區(qū)別為: 腳本文件通常為一連串指令,沒有函數(shù)聲明行,無輸入和輸出參數(shù);函數(shù)文件可以帶有輸入?yún)?shù),也可返回輸出參數(shù); 腳本運行過程所產(chǎn)生的變量都是全局變量,都駐留在Matlab工作空間內,只要不關閉Matlab ,不使用清內存的clear命令,變量將一直保存。 函數(shù)文件中定義的變量為局部變量,函數(shù)被調用時,M

3、atlab會為它開辟一個專用的臨時工作空間,用來存放中間變量,當執(zhí)行完函數(shù)文件的最后一條命令時就結束該函數(shù)的運行,返回函數(shù)的輸出,同時將臨時工作空間清空; 腳本文件可以直接運行,在Matlab命令窗口中輸入文件的名字;而函數(shù)文件不能直接運行,而要以函數(shù)調用的方式調用它。 對用戶來說,函數(shù)文件可以看做一個黑盒,提供輸入,得到輸出。因此易于程序模塊化,適用于大型程序代碼編制。 函數(shù)文件: 函數(shù)文件(Function File)是Matlab中一種重要且常用的文件,有函數(shù)聲明行、輸入?yún)?shù)和輸出參數(shù),以“function”引導。 函數(shù)文件的聲明結構為: function 輸出參數(shù)=函數(shù)名(輸入?yún)?shù))

4、注釋說明部分 函數(shù)體語句 return function 輸出參數(shù)=函數(shù)名(輸入?yún)?shù)) 注釋說明部分 函數(shù)體語句 return(1)引導行,表明該M文件是函數(shù)文件;(2)等號右側是函數(shù)接收的輸入?yún)?shù),多個參數(shù)間用“,”分隔,并用 “( )”括起來;等號左側是函數(shù)運算的結果,多個參數(shù)間用“,”分隔,并用“ ”括起來。(3)函數(shù)名是函數(shù)的名稱,當函數(shù)文件名與函數(shù)名不一致時,Matlab調用時將使用函數(shù)文件名。 function 輸出參數(shù)=函數(shù)名(輸入?yún)?shù)) 注釋說明部分 函數(shù)體語句 return(1)緊隨引導行之后以%開頭,第一行一般包括函數(shù)文件名和函數(shù)功能簡要描述;(2)連續(xù)注釋行,包括函數(shù)輸入

5、輸出參數(shù)的含義以及調用格式說明等,構成在線幫助文本;(3)最后的注釋行,包括函數(shù)文件編寫的信息、版本、日期等,用于軟件的檔案管理。 function 輸出參數(shù)=函數(shù)名(輸入?yún)?shù)) 注釋說明部分 函數(shù)體語句 return(1)由Matlab的命令構成;(2)當文件執(zhí)行完最后一條命令或遇到“return”命令時就結束函數(shù)文件的運行,同時工作空間的變量會被清除;也可以不使用return語句。 eg.在文本編輯器中建立函數(shù)文件,求兩點之間的距離: 保存為dist2.m文件: 在文本編輯器中建立如下腳本文件: 點擊文本編輯器中的Run或在命令窗口運行fdist2: help dist2:第4章 Matl

6、ab程序設計和M文件4.1 Matlab的M文件4.2 Matlab的流程控制4.3 Matlab程序的調試子函數(shù)和私有函數(shù): (1)一個M文件可以包括多個函數(shù),其中一個是主函數(shù),其它是子函數(shù)。這些子函數(shù)只能被該文件中的其它函數(shù)(主函數(shù)或子函數(shù))調用,不能被其它文件調用; (2)主函數(shù)必須出現(xiàn)在最上方其后可有若干子函數(shù),子函數(shù)的次序可隨意調整。主函數(shù)和各子函數(shù)的工作空間都是彼此獨立的,函數(shù)間信息可通過輸入?yún)?shù)、返回值、全局變量等傳遞。 (3)私有函數(shù)是主函數(shù)的一種,它只能夠在一個特定的限定函數(shù)群中可見。私有函數(shù)存放在以專有名稱private命名的子目錄下,只是對其父目錄中的函數(shù)是可見的; (4

7、)當M文件中需要調用某一個函數(shù)時,MATLAB是按照以下順序來搜尋的:檢查此函數(shù)是否是子函數(shù);檢查此函數(shù)是否為私有目錄的函數(shù);從所設定的搜尋路徑搜索此函數(shù)。 (5)搜索過程中,只要找到與第一個文件名相符的函數(shù)就會立即取用而停止搜索。 eg01. 定義一個函數(shù)文件 function y1=exch(x1,x2) y1=wadd(x3,x4) %subfunction function y2=wadd(xx1,xx2) 主函數(shù)子函數(shù)4.2 Matlab的流程控制Matlab允許程序員根據(jù)某些判決結構來控制程序的執(zhí)行順序。 三種常用的結構:順序結構、分支結構(選擇結構)和循環(huán)結構 程序流程控制語句:

8、循環(huán)控制語句、分支控制語句、其他控制語句、錯誤控制語句 順序結構 按照程序中語句的排列順序依次執(zhí)行,直到程序的最后一個語句。一般涉及數(shù)據(jù)的輸入、計算處理、數(shù)據(jù)的輸出等內容。 輸入:v=input(message) v=input(message,s) %將鍵入的數(shù)值賦給變量v 輸出:disp(輸出項) %既可以為字符串也可以為矩陣 允許輸入字符串 eg02. 求一元二次方程ax2+bx+c=0的根disp(x1=, x(1), x2=, x(2) 運行后輸出 暫停:pause(n) pause %按任意鍵后程序繼續(xù)執(zhí)行 Crtl+C %強行終止程序運行 分支結構(選擇結構) 分支結構是按照給定

9、的條件成立與否分別執(zhí)行不同的語句。Matlab中的分支結構語句包括:if 語句、switch語句、try語句。 (1) if 語句:單分支if 語句、雙分支if 語句、 多分支if 語句 單分支if 語句: if 條件 語句組end 單分支if 語句: if 條件 語句組end 當條件成立時,則執(zhí)行語句組,執(zhí)行完之后繼續(xù)執(zhí)行if 語句的后繼語句;若條件不成立,則直接執(zhí)行if 語句的后繼語句。 雙分支if 語句: if 條件 語句組1else 語句組2end 當條件成立時,則執(zhí)行語句組1,否則執(zhí)行語句組2;執(zhí)行完之后繼續(xù)執(zhí)行if 語句的后繼語句。 eg03. 計算分段函數(shù) 或者 多分支if 語句

10、: if 條件 1 語句組1 elseif 條件2 語句組2 elseif 條件m 語句組m else 語句組m+1 end 語句執(zhí)行過程如圖所示: 嵌套的if 語句:多個if 語句合在一起 if 條件 1 語句組1 else if 條件2 語句組2else end end多分支語句是elseif多分支語句只有一個end eg04. A/B/C/D/F分級 grade 95 A 95 grade 86 B 86 grade 76 C 76 grade 66 D 66 grade 0 F 用if 結構進行分級描述: (a) 多分支if 語句結構 (b) 嵌套if 結構 (a) 多分支if 語句結

11、構 (b) 嵌套if 結構 輸出結果為: (2)switch 語句:switch語句根據(jù)表達式的取值不同,分別執(zhí)行不同的語句。switch 表達式case 表達式1語句組1case 表達式2語句組2 otherwise 語句組n end switch語句執(zhí)行過程:求表達式的值KK=值1?語句組1K=值2?語句組2語句組n是是否 switch語句的下一語句否否 注:switch 子句后的表達式應為標量或者字符串,case 子句后面的表達式為標量、字符串、矩陣(數(shù)組)。 若case子句后面的表達式為一個矩陣,則表達式的值等于該矩陣中某個元素時,執(zhí)行相應的語句。 eg05. 使用switch結構判斷

12、學生成績的等級,90分以上為優(yōu),8090為良,7080為中,6070為及格,60分以下為不及格。score=input(plz input the score: );s1=fix(score/10); %取十位數(shù)switch s1case 9,10s=優(yōu)case 8s=良case 7s=中case 6s=及格otherwises=不及格end 輸出結果為: (3) try/catch 錯誤控制語句:一種試探性執(zhí)行語句,其格式為: try 語句組1 catch 語句組2 end運行程序出現(xiàn)一些不可預見的運行錯誤時,可以使用錯誤控制結構try/catch來捕獲和處理錯誤,避免程序出錯而不能繼續(xù)運行

13、。 try/catch 錯誤控制語句的執(zhí)行過程:先試探地執(zhí)行語句段1,如果出現(xiàn)錯誤則將錯誤信息賦給保留的laster變量,并放棄語句段1轉而執(zhí)行語句段2中的語句;如果語句段2正確則結束;當語句段1和語句段2都錯誤,則程序出錯。如果語句段1正確則不執(zhí)行語句段2就結束; eg06. a=1 3 5; c b=1 2 3; c= try 1 6 15 c=a.*b; catch c=a.*b; end循環(huán)結構:按照給定的條件,重復的執(zhí)行指定的語句。Matlab提供了兩種實現(xiàn)循環(huán)結構的語句:for語句和while語句。 (1)for 語句for 循環(huán)變量=表達式1:式2:式3循環(huán)體語句 end 初值終

14、值 for 循環(huán)變量=表達式1:式2:式3循環(huán)體語句 end 注:(1)通常的通常循環(huán)變量的控制表達式 為“:”操作,如i=1:10,j=1:2:10等; (2)循環(huán)的次數(shù)即為表達式的列數(shù),每 次循環(huán)中循環(huán)變量依次取各列并執(zhí)行 循環(huán)體,直到所有列取完。 for語句執(zhí)行過程如圖所示:分別求3個表達式的值表達式1的值賦給循環(huán)變量ii在表達式1的值和表達式3的值之間?循環(huán)體語句i增加1個步長是否 eg07. for語句的循環(huán)變量還可以是一個列向量,則格式為:for 循環(huán)變量=矩陣表達式循環(huán)體語句 end 執(zhí)行過程是依次將矩陣的各列元素賦給循環(huán)變量,然后執(zhí)行循環(huán)體語句,直至各列元素處理完畢。 eg08

15、. 求矩陣各行元素之和 (2)while 語句while 條件 循環(huán)體語句 end 其執(zhí)行過程為:若條件成立,則執(zhí)行循 環(huán)體語句,執(zhí)行后再判斷條件是否成 立,如果不成立則跳出循環(huán)。P68 圖4.5 eg09. 從鍵盤輸入若干個數(shù),當輸入0時結束,求這些數(shù)的平均值和它們的和。 輸出結果為: (3)循環(huán)嵌套:一個循環(huán)結構的循環(huán)體包含另外一個循環(huán)結構,就被稱為循環(huán)的嵌套,或多重循環(huán)結構。 多重循環(huán)的嵌套層數(shù)可以是任意的,處于內部的循環(huán)稱為內循環(huán),處于外部的循環(huán)稱作外循環(huán),在設計多重循環(huán)時要特別注意內、外循環(huán)之間的關系。 eg10. 尋找1,10000內的全部完數(shù)。 循環(huán)1循環(huán)2,求真因子之和判斷是否是完數(shù)輸出結果:m=6,28,496,8128 (4)其它語句 continue語句用于終止當前的循環(huán)操作,并直接跳轉到該循環(huán)的開始再次執(zhí)行該循環(huán),continue語句一般與if 語句配合使用。 break語句用于終止一個循環(huán)操作并立即跳出該循環(huán),以執(zhí)行該循環(huán)體之后的程序,break一般與if語句結合使用。 continue語句與break不同的是continue只結束本次for或while循環(huán),而繼續(xù)進行下次循環(huán)。 eg11.計算f(x)=ex,當f(x)1000時終止計算。 4.3 Matlab程序的調試Matlab在運行過程中,經(jīng)常出現(xiàn)的錯誤是語法錯誤、運行

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論