




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第3章MATLAB程序設計 【本章學習目標】 掌握建立和執行M文件的方法。 掌握利用if語句、switch語句實現選擇結構的方法。 掌握利用for語句、while語句實現循環結構的方法。 熟悉利用向量運算來代替循環操作的方法。 掌握定義和調用MATLAB函數的方法。3.1 M文件 交互式的命令執行方式 M文件的程序執行方式3.1.1 M文件的建立與打開1建立新的M文件(1)命令按鈕操作。(2)菜單操作。(3)命令操作。2打開已有的M文件 3.1.2 M文件的分類M文件可以根據調用方式的不同分為兩類:命令文件(Script File)和函數文件(Function File)。(1)命令文件沒有輸
2、入參數,也不返回輸出參數,而函數文件可以帶輸入參數,也可返回輸出參數。(2)命令文件對MATLAB工作空間中的變量進行操作,文件中所有命令的執行結果也完全返回到工作空間中,而函數文件中定義的變量為局部變量,當函數文件執行完畢時,這些變量被清除。(3)命令文件可以直接運行,在MATLAB命令窗口輸入命令文件的名字,就會順序執行命令文件中的命令,而函數文件不能直接運行,而要以函數調用的方式來調用它。【例3.1】建立一個M文件,其功能是:用兩個實變量R、M生成復變量RM,然后運行該M文件。程序1:建立一個命令文件。建立命令文件setcomp.mclear;R=1,2,3;4,5,6;M=11,12,
3、13;14,15,16;RM=R+i*M然后在MATLAB的命令窗口中輸入setcomp,將會執行該命令文件,輸出為RM = 1.0000 +11.0000i 2.0000 +12.0000i 3.0000 +13.0000i 4.0000 +14.0000i 5.0000 +15.0000i 6.0000 +16.0000i3.2 程序控制結構3.2.1 順序結構順序結構是指按照程序中語句的排列順序依次執行,一般涉及數據的輸入、數據的計算或處理、數據的輸出等內容。1數據的輸入從鍵盤輸入數據,則可以使用input函數來進行,該函數的調用格式為A=input(提示信息,選項);其中,“提示信息”
4、為一個字符串,用于提示用戶輸入什么樣的數據。例如,從鍵盤輸入A矩陣,可以采用下面的命令來完成:A=input(輸入A矩陣:);如果在input函數調用時采用s選項,則允許用戶輸入一個字符串。例如,想輸入一個人的姓名,可采用命令:xm=input(Whats your name?,s);2數據的輸出MATLAB提供的命令窗口輸出函數主要有disp函數,其調用格式為disp(輸出項)其中,輸出項既可以為字符串,也可以為矩陣。例如:A=Hello,World!;disp(A)【例3.2】求一元二次方程ax2 + bx+ c = 0的根。由于MATLAB能進行復數運算,所以不需要判斷方程的判別式,而直
5、接根據求根公式求根。程序如下:a=input(a=?);b=input(b=?);c=input(c=?);d=b*b-4*a*c;x=(-b+sqrt(d)/(2*a),(-b-sqrt(d)/(2*a);disp(x1=,num2str(x(1),x2=,num2str(x(2);3程序的暫停當程序運行時,為了查看程序的中間結果或者觀看輸出的圖形,有時需要暫停程序的執行。這時可以使用pause函數,其調用格式為pause(延遲秒數)如果省略延遲時間,則將暫停程序,直到用戶按任一鍵后程序繼續執行。若要強行中止程序的運行可使用Ctrl+C組合鍵。3.2.2 選擇結構選擇結構是根據給定的條件成立
6、或不成立,分別執行不同的語句。1if語句(1)單分支if語句:if 條件 語句塊end當條件成立時,則執行語句組,執行完之后繼續執行if語句的后繼語句,若條件不成立,則直接執行if語句的后繼語句。(2)雙分支if語句:if 條件 語句塊1else 語句塊2end當條件成立時,執行語句組1,否則執行語句組2,語句組1或語句組2執行后,再執行if語句的后繼語句。【例3.3】計算分段函數 :程序如下:x=input(請輸入x的值:);if x=A & c=a& c=0& c=9 disp(str2num(c)2);else disp(c);end2switch語句switch
7、語句根據表達式的取值不同,分別執行不同的語句,其語句格式為switch 表達式 case 結果表1 語句塊1 case 結果表2 語句塊2 case 結果表n 語句塊n otherwise 語句塊n+1 end 圖2.3 switch語句的執行過程switch子句后面的表達式應為一個標量或一個字符串,case子句后面的結果不僅可以為一個標量或一個字符串,而且還可以為一個將多個結果用大括號括起來的單元數據(Cell)。如果case子句后面的結果為一個單元數據,則表達式的值等于該單元數據中的某個元素時,執行相應的語句組。 【例3.5】將例3.4改用switch語句實現。c=input(請輸入一個字
8、符:,s);cc=abs(c);switch(cc) case num2cell(abs(A):abs(Z) disp(lower(c); case num2cell(abs(a):abs(z) disp(upper(c); case num2cell(abs(0):abs(9) disp(abs(c)-abs(0)2); otherwise disp(c);endnum2cell函數是將數值矩陣轉化為單元矩陣,num2cell(1:5)等價于1,2,3,4,5。3try語句try語句是一種試探性執行語句,為開發人員提供了一種捕獲錯誤的機制,其語句格式為try 語句塊1catch 語句塊2en
9、dtry語句先試探性執行語句塊1,如果語句塊1在執行過程中出現錯誤,則將錯誤信息賦給保留的lasterr變量,并轉去執行語句塊2。【例3.6】矩陣乘法運算要求兩矩陣的維數相容,否則會出錯。先求兩矩陣的乘積,若出錯,則自動轉去求兩矩陣的點乘。A=input(請輸入A矩陣:);B=input(請輸入B矩陣:);lasterr(); %清除原有的錯誤信息try C=A*B;catch C=A.*B;endCdisp(lasterr) %顯示出錯原因3.2.3 循環結構循環是指按照給定的條件,重復執行指定的語句。1for語句圖3.4 for語句執行過程for語句的格式為for 循環變量=表達式1:表達
10、式2:表達式3 循環體語句end其中,表達式1的值為循環變量的初值,表達式2的值為步長,表達式3的值為循環變量的終值。步長為1時,表達式2可以省略。【例3.7】一個3位整數各位數字的立方和等于該數本身則稱該數為水仙花數。輸出全部水仙花數。程序如下:shu=; %用于存放結果,先賦空值for m=100:999 m1=fix(m/100); %求m的百位數字 m2=rem(fix(m/10),10); %求m的十位數字 m3=rem(m,10); %求m的個位數字 if m=m1*m1*m1+m2*m2*m2+m3*m3*m3 shu=shu,m; %存入結果 endendshufor語句的循環
11、變量可以是一個列向量。for語句更一般的格式為for 循環變量=矩陣表達式 循環體語句end執行過程是依次將矩陣的各列元素賦給循環變量,然后執行循環體語句,直至各列元素處理完畢。【例3.9】寫出下列程序的執行結果。s=0;a=12,13,14;15,16,17;18,19,20;21,22,23;for k=a s=s+k;enddisp(s);該程序的功能是求矩陣各行元素之和,執行結果是: 39 48 57 662while語句while語句的一般格式為while(條件) 循環體語句end【例3.10】求使 最小的n。程序如下:y=0;n=0;while (y1 & n1) | (m
12、=1 & n=1) error(Input must be a vector)ends=sum(v); %求向量和m=s/length(v); %求向量平均值將以上函數文件以文件名fvector.m存盤,然后在MATLAB命令窗口調用該函數:s,p=fvector(1:10)(2)注釋說明包括如下3部分內容。緊隨函數文件引導行之后以%開頭的第一注釋行。這一行一般包括大寫的函數文件名和函數功能簡要描述,供lookfor關鍵詞查詢和help在線幫助用。第一注釋行及之后連續的注釋行。通常包括函數輸入輸出參數的含義及調用格式說明等信息,構成全部在線幫助文本。與在線幫助文本相隔一空行的注釋行。包
13、括函數文件編寫和修改的信息,如作者、修改日期、版本等內容,用于軟件檔案管理。采用help命令或lookfor命令可以顯示出注釋說明部分的內容,其功能和一般MATLAB函數的幫助信息是一致的。利用help命令可查詢fvector函數的注釋說明:help fvector再用lookfor命令在第一注釋行查詢指定的關鍵詞:lookfor fvector(3)如果在函數文件中插入了return語句,則執行到該語句就結束函數的執行,程序流程轉至調用該函數的位置。3.3.2 函數調用函數調用的一般格式為輸出實參表=函數名(輸入實參表)函數調用時各實參出現的順序、個數,應與函數定義時形參的順序、個數一致,否
14、則會出錯。函數調用時,先將實參傳遞給相應的形參,從而實現參數傳遞,然后再執行函數的功能。【例3.14】利用函數文件,實現直角坐標(x,y)與極坐標(,)之間的轉換。函數文件tran.m:function rho,theta=tran(x,y)rho=sqrt(x*x+y*y);theta=atan2(y,x);調用tran.m的命令文件main1.m:x=input(Please input x=:);y=input(Please input y=:);rho,the=tran(x,y);rhothe【例3.15】利用函數的遞歸調用,求n!。n!本身就是以遞歸的形式定義的:顯然,求n!需要求(
15、n1)!,這時可采用遞歸調用。遞歸調用函數文件factor.m如下:function f=factor(n)if n,利用命令操作方式來實現程序調試。3.4.2 MATLAB調試菜單1控制單步運行(1)Step:單步運行。每單擊一次,程序運行一次,但不進入函數。(2)Step In:單步運行。遇到函數時進入函數內,仍單步運行。(3)Step Out:停止單步運行。如果是在函數中,跳出函數;如果不在函數中,直接運行到下一個斷點處。(4)Go Until Cursor:直接運行到光標所在的位置。2斷點操作(1)Set/Clear Breakpoint:設置或清除斷點。(2)Set/Modify Conditional Breakpoint:設置或修改條件斷
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 河北省省級聯測2024-2025學年高二下學期6月期末考試地理試卷(含答案)
- 部編版四年級上冊第五單元《麻雀》教案
- 山東考生歷史題目及答案
- 日語會話類題目及答案
- 平面與立體相交2
- 2023-2024學年湖北省武漢市武昌區高二下學期6月期末考試數學試題(解析版)
- 2025屆廣東省廣州市高三下學期一模考試語文試題(解析版)
- 環境工程經濟分析課件
- 合成樹脂乳液內墻涂料產品質量河南省監督抽查實施細則
- 拖拉機產品質量監督抽查實施細則
- 《物流運輸實務》課件
- 在幼兒園中打造有趣的數學學習環境
- 食品小作坊應急預案范本
- 2023全屋定制家具合同范文正規范本(通用版)
- 蘭州市新初一分班英語試卷含答案
- 吾心可鑒 澎湃的福流
- ZPW-2000A無絕緣軌道電路演示幻燈片
- 黃平縣舊州飛機場紅磚廠原址改擴建項目環評報告
- 統計預測與決策-南京財經大學中國大學mooc課后章節答案期末考試題庫2023年
- 零星材料采購合同
- 天津市大港區2023年數學五下期末學業質量監測模擬試題含解析
評論
0/150
提交評論