版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、1第第4講講 M文件和面向對象編程文件和面向對象編程4.1 M文件文件4.2 MATLAB控制流控制流4.3 腳本文件和函數文件腳本文件和函數文件24.1 M文件文件一、一、M文件概述文件概述用MATLAB語言編寫的程序,稱為M文件。二、二、M文件的建立和編輯文件的建立和編輯1、建立新的M文件 (1)菜單操作:File New M-file。 (2)命令操作:在Command Window中輸入edit。 (3)命令按鈕操作:單擊工具欄上的“新建” 按鈕。2、編輯已有的M文件3三、三、M文件分為兩類文件分為兩類命令文件(Script File)函數文件(Function File)4例1:分別
2、建立命令文件和函數文件,將華氏溫度F轉換為攝氏溫度C。命令文件:命令文件: F2C1.mclear F=input(Input Fahrenheit temperature:F=);C=5*(F-32)/9函數文件:函數文件:F2C2.mfunction C=F2C2(F)C=5*(F-32)/954.2 MATLAB控制流控制流一、程序結構二、控制程序流的其他常用指令6一、 程序結構1. 順序結構例:%用符號計算求微分syms a t x;f=a, t3; t*cos(x), log(x);df=diff(f);dfdt2=diff(f, t, 2);dfdxdt=diff(diff(f,
3、x), t);72. 循環(huán)結構for循環(huán)結構:循環(huán)結構:for 循環(huán)變量起始值:步長:終止值 循環(huán)體endwhile循環(huán)結構:循環(huán)結構:while 表達式 循環(huán)體end8注意:(1)循環(huán)結構可嵌套使用;(2)為得到高效代碼,應盡量提高代碼的向量化程度,避免使用循環(huán)結構;(3)循環(huán)指令前最好對數組進行預定義,以提高運行效率;(4)使用while循環(huán)時,一定要注意避免進入死循環(huán)。9例2. 已知y(0)=0, y(n)-y(n-1)=n-2,當n=100時,求y. 程序如下: clear y=0; n=100; for i=1:n y=y+1/i/i; end y 在實際編程中,為提高程序的執(zhí)行速度
4、,常用向量運算來代替循環(huán)操作: clear n=100; i=1:n; f=1./i.2; y=sum(f)10例3:若數組a中a1=a2=1,且ak+2=ak+ak+1,試求該數組中第一個大于10000的元素程序如下: clear a(1)=1; a(2)=1; i=2; while a(i)=10000 a(i+1)=a(i-1)+a(i); i=i+1; end i, a(i)113. 分支結構if-else-end分支結構:分支結構:if 邏輯表達式 執(zhí)行語句 endif 邏輯表達式 執(zhí)行語句1 else 執(zhí)行語句2endif 邏輯表達式1 執(zhí)行語句1elseif 邏輯表達式2 執(zhí)行語
5、句2else 執(zhí)行語句nend12switch-case分支結構:分支結構:switch 表達式(可以是標量或字符串) case 值1 語句1 case 值2 語句2 . otherwise 語句nend13例4. 計算分段函數值。 程序如下: clear x=input(請輸入x的值:); if x=A & c=a& c=0& c=9 disp(abs(c)-abs(0); else disp(c); end15例6 某商場對顧客所購買的商品實行打折銷售,已知打折標準,求所售商品的實際銷售價格。 程序如下:clearprice=input(請輸入商品價格);switch fix(price/
6、100) case 0,1 rate=0; case 2,3,4 rate=3/100; case num2cell(5:9) rate=5/100; case num2cell(10:24) rate=8/100; case num2cell(25:49) rate=10/100;otherwise rate=14/100;endprice=price*(1-rate)164. try-catch結構try 執(zhí)行語句1catch 執(zhí)行語句2end17例7 矩陣乘法運算要求兩矩陣的維數相容,否則會出錯。先求兩矩陣的乘積,若出錯,則自動轉去求兩數組的點乘。程序如下:A=1,2,3;4,5,6;
7、B=7,8,9;10,11,12;try C=A*B;catch C=A.*B;endClasterr %顯示出錯原因18二、 控制程序流的其他常用指令1. return 指令強制MATLAB結束執(zhí)行當前函數并把控制轉出 2. keyboard指令: 當程序遇到keyboard時,MATLAB將控制權交給鍵盤,用戶可以從鍵盤輸入各種合法的MATLAB指令。只有當用戶使用回車結束輸入后,控制權才交還給程序。 193. input指令和disp指令input指令: 把MATLAB的控制權暫時交給用戶。此后,用戶通過鍵盤鍵入數值、字符串或表達式,并經“回車”把鍵入內容輸入工作空間,同時把“控制權”交
8、還給MATLAB。 常用的格式:常用的格式:v=input(message) %將用戶鍵入的內容賦給變量vv=input(message,s) %將用戶鍵入的內容作為字符串賦給變量v20disp指令:格式:disp(輸出項)輸出項可以為字符串,也可為矩陣例8:求一元二次方程ax2+bx+c=0的根。程序如下:cleara=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);214. Pa
9、use指令暫時停止程序的運行。格式:格式: pause %暫停執(zhí)行文件,等待用戶按任意鍵繼續(xù) pause(n) %在繼續(xù)執(zhí)行之前,暫停n秒225. break指令和continue指令通常用于for或while循環(huán)中,與if語句配合使用。 break:用于終止循環(huán)的執(zhí)行。continue:控制跳過循環(huán)體中的某些語句。繼續(xù)下一次循環(huán)。23例9 求100,200之間第一個能被21整除的整數。程序如下:clearfor n=100:200 if rem(n,21)=0 continue endbreakendn245. error和warning指令error(message) %顯示出錯信息mes
10、sage,終止程序warning(message) %顯示警告信息message,程序繼續(xù)執(zhí)行254.3 腳本文件和腳本文件和M函數文件函數文件一、腳本文件 二、M函數文件三、程序的調試26一、腳本文件 (命令文件)特點:(1)沒有輸入和輸出 (2)由一系列指令組成(3)可在命令窗口直接運行指令(4)產生的所有變量存儲在workspace中27二、M函數文件1. 特點:(1)第一行總是以“function”引導的“函數定義行”。并給出全部輸入、輸出宗量。 (2)函數文件運行,matlab就會專門為它開辟一個臨時工作空間,稱之為函數工作空間。 (3)函數工作空間相對workspace是獨立的、臨
11、時的。282、M函數文件的規(guī)則和屬性 (1) 一般要求函數名和文件名必須相同。(2) 函數的輸入參量和輸出參量都可以是零個或更多個。當輸出參量多于一個時,輸出參量包含在方括號內。例如,V,D=eig(A).(3) 函數輸入參量個數、輸出參量個數分別由變量nargin和 nargout包含。函數調用時,輸入和輸出變量可以少于函數文件中所規(guī)定的變量數目,但不能多于29 3. 函數文件的構成(1)函數定義行function 輸出形參表= 函數名(輸入形參表)(2)H1行%注釋說明部分,對程序的總體介紹(3)函數信息說明行 %簡要描述函數功能,以及參數的含義,函數調用格式等(4)程序主體函數體(5)注
12、釋%在函數體中會出現對某些程序行的注釋304. 函數文件的調用:函數文件調用的一般格式: 輸出實參表=函數名(輸入實參表) 在調用函數時,MATLAB用兩個永久變量nargin和nargout分別記錄調用該函數時的輸入實參和輸出實參的個數。只要在函數文件中包含這兩個變量,就可以準確地知道該函數文件被調用時的輸入輸出參數個數,從而決定函數如何進行處理。31例10:nargin用法示例函數文件examp.m: function f=examp(a,b,c) if nargin=1 f=a; elseif nargin=2 f=a+b; elseif nargin=3 f=(a*b*c)/2; en
13、d命令文件mydemo.m:clear x=1:3;y=1;2;3; examp(x) examp(x,y) examp(x,y,3)輸出: ans = 1 2 3 ans = 2 4 6 ans = 2132總結:總結: MATLAB程序設計原則和技巧程序設計原則和技巧(1)后面的內容是程序的注解,要善于運用注解使程序更具可讀性。(2)養(yǎng)成在主程序開頭用clear指令清除變量的習慣,以消除工作空間中其他變量對程序運行的影響。但注意在子程序中不要用clear。(3)參數值要集中放在程序的開始部分,以便維護。要充分利用MATLAB工具箱提供的指令來執(zhí)行所要進行的運算,在語句行之后輸入分號使其及中
14、間結果不在屏幕上顯示,以提高執(zhí)行速度。33(4)程序盡量模塊化,也就是采用主程序調用子程序的方法,將所有子程序合并在一起來執(zhí)行全部的操作。(5)充分利用Debugger來進行程序的調試(設置斷點、單步執(zhí)行、連續(xù)執(zhí)行)(6)設置好MATLAB的工作路徑,以便程序運行。34三、程序的調試這部分內容是上機應用的重點內容。程序出錯主要為兩類:程序出錯主要為兩類: 1、語法錯誤 如缺(或)等,在運行時可檢測出大多數該類錯誤,并指出錯在哪一行。 2、算法錯誤 邏輯上的錯誤,不易查找,遇到此類錯誤時需耐心。一般可考慮如下方法:直接調試法和工具調試法35直接調試法:利用matlab的相關指令對程序進行調試。 主要方法有:刪除句尾分號和利用disp語句,顯示中間結果;在適當位置加上keyboard語句,使程序
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《電力工業(yè)概況》課件
- 小學一年級100以內口算題
- 小學三年級多位數加減法脫式計算練習題
- 銀行績效考核總結
- 航空航天行業(yè)會計工作總結
- 《課程TMA系統篇》課件
- 公益機構后勤管理工作概述
- 班主任與家校溝通的藝術與實踐
- 2023-2024學年河南省周口市部分校高三(下)開學地理試卷(2月份)
- 《創(chuàng)新的內涵培訓》課件
- 2024年中國電信運營商服務合同
- 2025屆山東省即墨一中物理高三第一學期期末綜合測試試題含解析
- 健身房的考勤管理制度
- 無人機使用安全協議書范文范本
- 中國汽車行業(yè)分析與展望:適者生存-2024-10-市場解讀
- 專題05 閱讀-2023-2024學年六年級英語寒假專項提升(人教PEP版)
- 做賬實操-期貨公司的賬務處理示例
- 雙方共用消防通道協議書
- 綠化租擺服務投標方案(技術標)
- 整本書閱讀《鄉(xiāng)土中國》議題思辨:無訟之“訟”教學設計 中職語文高教版基礎模塊下冊
- 醫(yī)學教材 鼻出血的正確處理方法
評論
0/150
提交評論