MATLAB及其應(yīng)用-第4講67603_第1頁(yè)
MATLAB及其應(yīng)用-第4講67603_第2頁(yè)
MATLAB及其應(yīng)用-第4講67603_第3頁(yè)
MATLAB及其應(yīng)用-第4講67603_第4頁(yè)
MATLAB及其應(yīng)用-第4講67603_第5頁(yè)
已閱讀5頁(yè),還剩32頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、1第第4講講 M文件和面向?qū)ο缶幊涛募兔嫦驅(qū)ο缶幊?.1 M文件文件4.2 MATLAB控制流控制流4.3 腳本文件和函數(shù)文件腳本文件和函數(shù)文件24.1 M文件文件一、一、M文件概述文件概述用MATLAB語言編寫的程序,稱為M文件。二、二、M文件的建立和編輯文件的建立和編輯1、建立新的M文件 (1)菜單操作:File New M-file。 (2)命令操作:在Command Window中輸入edit。 (3)命令按鈕操作:?jiǎn)螕艄ぞ邫谏系摹靶陆ā?按鈕。2、編輯已有的M文件3三、三、M文件分為兩類文件分為兩類命令文件(Script File)函數(shù)文件(Function File)4例1:分別

2、建立命令文件和函數(shù)文件,將華氏溫度F轉(zhuǎn)換為攝氏溫度C。命令文件:命令文件: F2C1.mclear F=input(Input Fahrenheit temperature:F=);C=5*(F-32)/9函數(shù)文件:函數(shù)文件:F2C2.mfunction C=F2C2(F)C=5*(F-32)/954.2 MATLAB控制流控制流一、程序結(jié)構(gòu)二、控制程序流的其他常用指令6一、 程序結(jié)構(gòu)1. 順序結(jié)構(gòu)例:%用符號(hào)計(jì)算求微分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)結(jié)構(gòu)for循環(huán)結(jié)構(gòu):循環(huán)結(jié)構(gòu):for 循環(huán)變量起始值:步長(zhǎng):終止值 循環(huán)體endwhile循環(huán)結(jié)構(gòu):循環(huán)結(jié)構(gòu):while 表達(dá)式 循環(huán)體end8注意:(1)循環(huán)結(jié)構(gòu)可嵌套使用;(2)為得到高效代碼,應(yīng)盡量提高代碼的向量化程度,避免使用循環(huán)結(jié)構(gòu);(3)循環(huán)指令前最好對(duì)數(shù)組進(jìn)行預(yù)定義,以提高運(yùn)行效率;(4)使用while循環(huán)時(shí),一定要注意避免進(jìn)入死循環(huán)。9例2. 已知y(0)=0, y(n)-y(n-1)=n-2,當(dāng)n=100時(shí),求y. 程序如下: clear y=0; n=100; for i=1:n y=y+1/i/i; end y 在實(shí)際編程中,為提高程序的執(zhí)行速度

4、,常用向量運(yùn)算來代替循環(huán)操作: clear n=100; i=1:n; f=1./i.2; y=sum(f)10例3:若數(shù)組a中a1=a2=1,且ak+2=ak+ak+1,試求該數(shù)組中第一個(gè)大于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. 分支結(jié)構(gòu)if-else-end分支結(jié)構(gòu):分支結(jié)構(gòu):if 邏輯表達(dá)式 執(zhí)行語句 endif 邏輯表達(dá)式 執(zhí)行語句1 else 執(zhí)行語句2endif 邏輯表達(dá)式1 執(zhí)行語句1elseif 邏輯表達(dá)式2 執(zhí)行語

5、句2else 執(zhí)行語句nend12switch-case分支結(jié)構(gòu):分支結(jié)構(gòu):switch 表達(dá)式(可以是標(biāo)量或字符串) case 值1 語句1 case 值2 語句2 . otherwise 語句nend13例4. 計(jì)算分段函數(shù)值。 程序如下: clear x=input(請(qǐng)輸入x的值:); if x=A & c=a& c=0& c=9 disp(abs(c)-abs(0); else disp(c); end15例6 某商場(chǎng)對(duì)顧客所購(gòu)買的商品實(shí)行打折銷售,已知打折標(biāo)準(zhǔn),求所售商品的實(shí)際銷售價(jià)格。 程序如下:clearprice=input(請(qǐng)輸入商品價(jià)格);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結(jié)構(gòu)try 執(zhí)行語句1catch 執(zhí)行語句2end17例7 矩陣乘法運(yùn)算要求兩矩陣的維數(shù)相容,否則會(huì)出錯(cuò)。先求兩矩陣的乘積,若出錯(cuò),則自動(dòng)轉(zhuǎn)去求兩數(shù)組的點(diǎn)乘。程序如下:A=1,2,3;4,5,6;

7、B=7,8,9;10,11,12;try C=A*B;catch C=A.*B;endClasterr %顯示出錯(cuò)原因18二、 控制程序流的其他常用指令1. return 指令強(qiáng)制MATLAB結(jié)束執(zhí)行當(dāng)前函數(shù)并把控制轉(zhuǎn)出 2. keyboard指令: 當(dāng)程序遇到keyboard時(shí),MATLAB將控制權(quán)交給鍵盤,用戶可以從鍵盤輸入各種合法的MATLAB指令。只有當(dāng)用戶使用回車結(jié)束輸入后,控制權(quán)才交還給程序。 193. input指令和disp指令input指令: 把MATLAB的控制權(quán)暫時(shí)交給用戶。此后,用戶通過鍵盤鍵入數(shù)值、字符串或表達(dá)式,并經(jīng)“回車”把鍵入內(nèi)容輸入工作空間,同時(shí)把“控制權(quán)”交

8、還給MATLAB。 常用的格式:常用的格式:v=input(message) %將用戶鍵入的內(nèi)容賦給變量vv=input(message,s) %將用戶鍵入的內(nèi)容作為字符串賦給變量v20disp指令:格式:disp(輸出項(xiàng))輸出項(xiàng)可以為字符串,也可為矩陣?yán)?:求一元二次方程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指令暫時(shí)停止程序的運(yùn)行。格式:格式: 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之間第一個(gè)能被21整除的整數(shù)。程序如下:clearfor n=100:200 if rem(n,21)=0 continue endbreakendn245. error和warning指令error(message) %顯示出錯(cuò)信息mes

10、sage,終止程序warning(message) %顯示警告信息message,程序繼續(xù)執(zhí)行254.3 腳本文件和腳本文件和M函數(shù)文件函數(shù)文件一、腳本文件 二、M函數(shù)文件三、程序的調(diào)試26一、腳本文件 (命令文件)特點(diǎn):(1)沒有輸入和輸出 (2)由一系列指令組成(3)可在命令窗口直接運(yùn)行指令(4)產(chǎn)生的所有變量存儲(chǔ)在workspace中27二、M函數(shù)文件1. 特點(diǎn):(1)第一行總是以“function”引導(dǎo)的“函數(shù)定義行”。并給出全部輸入、輸出宗量。 (2)函數(shù)文件運(yùn)行,matlab就會(huì)專門為它開辟一個(gè)臨時(shí)工作空間,稱之為函數(shù)工作空間。 (3)函數(shù)工作空間相對(duì)workspace是獨(dú)立的、臨

11、時(shí)的。282、M函數(shù)文件的規(guī)則和屬性 (1) 一般要求函數(shù)名和文件名必須相同。(2) 函數(shù)的輸入?yún)⒘亢洼敵鰠⒘慷伎梢允橇銈€(gè)或更多個(gè)。當(dāng)輸出參量多于一個(gè)時(shí),輸出參量包含在方括號(hào)內(nèi)。例如,V,D=eig(A).(3) 函數(shù)輸入?yún)⒘總€(gè)數(shù)、輸出參量個(gè)數(shù)分別由變量nargin和 nargout包含。函數(shù)調(diào)用時(shí),輸入和輸出變量可以少于函數(shù)文件中所規(guī)定的變量數(shù)目,但不能多于29 3. 函數(shù)文件的構(gòu)成(1)函數(shù)定義行function 輸出形參表= 函數(shù)名(輸入形參表)(2)H1行%注釋說明部分,對(duì)程序的總體介紹(3)函數(shù)信息說明行 %簡(jiǎn)要描述函數(shù)功能,以及參數(shù)的含義,函數(shù)調(diào)用格式等(4)程序主體函數(shù)體(5)注

12、釋%在函數(shù)體中會(huì)出現(xiàn)對(duì)某些程序行的注釋304. 函數(shù)文件的調(diào)用:函數(shù)文件調(diào)用的一般格式: 輸出實(shí)參表=函數(shù)名(輸入實(shí)參表) 在調(diào)用函數(shù)時(shí),MATLAB用兩個(gè)永久變量nargin和nargout分別記錄調(diào)用該函數(shù)時(shí)的輸入實(shí)參和輸出實(shí)參的個(gè)數(shù)。只要在函數(shù)文件中包含這兩個(gè)變量,就可以準(zhǔn)確地知道該函數(shù)文件被調(diào)用時(shí)的輸入輸出參數(shù)個(gè)數(shù),從而決定函數(shù)如何進(jìn)行處理。31例10:nargin用法示例函數(shù)文件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總結(jié):總結(jié): MATLAB程序設(shè)計(jì)原則和技巧程序設(shè)計(jì)原則和技巧(1)后面的內(nèi)容是程序的注解,要善于運(yùn)用注解使程序更具可讀性。(2)養(yǎng)成在主程序開頭用clear指令清除變量的習(xí)慣,以消除工作空間中其他變量對(duì)程序運(yùn)行的影響。但注意在子程序中不要用clear。(3)參數(shù)值要集中放在程序的開始部分,以便維護(hù)。要充分利用MATLAB工具箱提供的指令來執(zhí)行所要進(jìn)行的運(yùn)算,在語句行之后輸入分號(hào)使其及中

14、間結(jié)果不在屏幕上顯示,以提高執(zhí)行速度。33(4)程序盡量模塊化,也就是采用主程序調(diào)用子程序的方法,將所有子程序合并在一起來執(zhí)行全部的操作。(5)充分利用Debugger來進(jìn)行程序的調(diào)試(設(shè)置斷點(diǎn)、單步執(zhí)行、連續(xù)執(zhí)行)(6)設(shè)置好MATLAB的工作路徑,以便程序運(yùn)行。34三、程序的調(diào)試這部分內(nèi)容是上機(jī)應(yīng)用的重點(diǎn)內(nèi)容。程序出錯(cuò)主要為兩類:程序出錯(cuò)主要為兩類: 1、語法錯(cuò)誤 如缺(或)等,在運(yùn)行時(shí)可檢測(cè)出大多數(shù)該類錯(cuò)誤,并指出錯(cuò)在哪一行。 2、算法錯(cuò)誤 邏輯上的錯(cuò)誤,不易查找,遇到此類錯(cuò)誤時(shí)需耐心。一般可考慮如下方法:直接調(diào)試法和工具調(diào)試法35直接調(diào)試法:利用matlab的相關(guān)指令對(duì)程序進(jìn)行調(diào)試。 主要方法有:刪除句尾分號(hào)和利用disp語句,顯示中間結(jié)果;在適當(dāng)位置加上keyboard語句,使程序

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論