matlab函數(shù)文件和腳本文件[高教課堂]_第1頁(yè)
matlab函數(shù)文件和腳本文件[高教課堂]_第2頁(yè)
matlab函數(shù)文件和腳本文件[高教課堂]_第3頁(yè)
matlab函數(shù)文件和腳本文件[高教課堂]_第4頁(yè)
matlab函數(shù)文件和腳本文件[高教課堂]_第5頁(yè)
已閱讀5頁(yè),還剩41頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第五章第五章 腳本文件和函數(shù)文件腳本文件和函數(shù)文件 1教育教學(xué) 本節(jié)內(nèi)容 n 掌握腳本文件和函數(shù)文件的區(qū)別 n掌握函數(shù)文件的編寫(xiě)和調(diào)用 n掌握M文件的調(diào)試方法 n掌握文件的打開(kāi)和關(guān)閉 2教育教學(xué) 1 M文件-腳本文件 腳本文件只是一串按照用戶(hù)意圖排列而成腳本文件只是一串按照用戶(hù)意圖排列而成 的的MATLAB指令集合,即只是簡(jiǎn)單命令的疊指令集合,即只是簡(jiǎn)單命令的疊 加。它沒(méi)有輸入?yún)?shù),也沒(méi)有輸出參數(shù)。加。它沒(méi)有輸入?yún)?shù),也沒(méi)有輸出參數(shù)。 它運(yùn)行后產(chǎn)生的變量都是全局變量,均駐它運(yùn)行后產(chǎn)生的變量都是全局變量,均駐 留在留在workspace中。中。只要用戶(hù)不使用指令只要用戶(hù)不使用指令clear 加以

2、清除,或加以清除,或MATLAB指令窗不關(guān)閉,這些指令窗不關(guān)閉,這些 變量將一直保存在基本工作空間中。變量將一直保存在基本工作空間中。 3教育教學(xué) 例例:計(jì)算小于任意自然數(shù)計(jì)算小于任意自然數(shù)n的的fibonnaci數(shù)。數(shù)。 運(yùn)行文件運(yùn)行文件(F5/Debug|Run(F5/Debug|Run) 4教育教學(xué) 函數(shù)文件 函數(shù)文件是一種特殊類(lèi)型的運(yùn)行在自己獨(dú)立 的工作空間的M文件,通過(guò)輸入形參表接收數(shù) 據(jù),通過(guò)輸出形參返回結(jié)果到調(diào)用文件。 function function 輸出形參表輸出形參表=fname(=fname(輸入形參表輸入形參表) ) % H1% H1注釋行注釋行 % % 其他注釋行其

3、他注釋行 (可執(zhí)行代碼)(可執(zhí)行代碼) (return)(return) 5教育教學(xué) 以function開(kāi)頭的一行為引導(dǎo)行,是函數(shù)定義語(yǔ) 句,表示該M文件是一個(gè)函數(shù)文件。 幫助文本的首行(H1行):用于help幫助使用和 lookfor搜索 幫助文本:指H1行之后到函數(shù)體之前的注釋行。 包括函數(shù)的意義、各參數(shù)的意義、調(diào)用格式以 及程序的作者、日期等。 函數(shù)體是函數(shù)的執(zhí)行代碼,是文件主要部分。 注釋?zhuān)阂?開(kāi)頭,可出現(xiàn)在程序中任意一行,用 綠色表示。編譯時(shí)會(huì)被忽略,不會(huì)影響程序運(yùn) 行速度。 6教育教學(xué) 例:編寫(xiě)函數(shù)計(jì)算兩點(diǎn)之間的距離。例:編寫(xiě)函數(shù)計(jì)算兩點(diǎn)之間的距離。 7教育教學(xué) l當(dāng)函數(shù)的輸出參數(shù)

4、多于一個(gè)時(shí),應(yīng)該用當(dāng)函數(shù)的輸出參數(shù)多于一個(gè)時(shí),應(yīng)該用方括號(hào)方括號(hào) 括起來(lái),并以括起來(lái),并以逗號(hào)隔開(kāi)逗號(hào)隔開(kāi); l傳遞給函數(shù)的變量不必與函數(shù)定義行中的參數(shù)傳遞給函數(shù)的變量不必與函數(shù)定義行中的參數(shù) 同名;同名; l函數(shù)和文件的命名規(guī)則與變量命名規(guī)則相同;函數(shù)和文件的命名規(guī)則與變量命名規(guī)則相同; l若保存的文件名與函數(shù)名不同,則在若保存的文件名與函數(shù)名不同,則在調(diào)用時(shí)必調(diào)用時(shí)必 須使用文件名須使用文件名。 l建議:函數(shù)名與文件名應(yīng)一致建議:函數(shù)名與文件名應(yīng)一致(系統(tǒng)默認(rèn)系統(tǒng)默認(rèn)) 注意事項(xiàng) 8教育教學(xué) l函數(shù)文件運(yùn)行時(shí),函數(shù)文件運(yùn)行時(shí),MATLAB會(huì)專(zhuān)門(mén)為其開(kāi)辟會(huì)專(zhuān)門(mén)為其開(kāi)辟 一一臨時(shí)工作空間臨時(shí)工

5、作空間(函數(shù)空間),所有變量都(函數(shù)空間),所有變量都 存放于此。文件運(yùn)行完畢后,該臨時(shí)空間以存放于此。文件運(yùn)行完畢后,該臨時(shí)空間以 及所有中間變量就立即被清除;及所有中間變量就立即被清除; l函數(shù)空間隨函數(shù)文件的調(diào)用而產(chǎn)生,隨調(diào)用函數(shù)空間隨函數(shù)文件的調(diào)用而產(chǎn)生,隨調(diào)用 而結(jié)束;而結(jié)束; l函數(shù)文件的變量除特別聲明外均是局部變量函數(shù)文件的變量除特別聲明外均是局部變量 9教育教學(xué) 函數(shù)運(yùn)行-調(diào)用 注:1)函數(shù)調(diào)用時(shí),先將實(shí)參傳遞給相應(yīng)的形 參,實(shí)現(xiàn)參數(shù)傳遞,然后再執(zhí)行函數(shù)的功能。 2)各實(shí)參出現(xiàn)的順序、個(gè)數(shù)應(yīng)與形參定義的順序 和個(gè)數(shù)一致,否則會(huì)出錯(cuò)。 函數(shù)文件運(yùn)行不能選中菜單Run,而是調(diào)用。

6、輸出實(shí)參表輸出實(shí)參表 函數(shù)名(輸入實(shí)參表)函數(shù)名(輸入實(shí)參表) n 函數(shù)調(diào)用的一般格式 10教育教學(xué) 11教育教學(xué) 腳本文件和函數(shù)文件的區(qū)別 n相同:擴(kuò)展名都是.m,可用文件編輯器編寫(xiě) n不同:1)腳本文件無(wú)輸入、輸出參數(shù) ; 2)函數(shù)文件與指令空間只能通過(guò)輸入?yún)?shù) 和輸出參數(shù)通信,中間變量不出現(xiàn); 3)腳本文件產(chǎn)生的變量都是全局變量,存 放在基本工作空間中;而函數(shù)文件產(chǎn)生的中 間變量存放在臨時(shí)工作空間中,它隨函數(shù)的 調(diào)用結(jié)束而刪除; 4)運(yùn)行方式不同。 12教育教學(xué) 1)以以ffib.m為名存盤(pán)為名存盤(pán) 2)MATLAB命令窗口輸入命令:命令窗口輸入命令: ffib(1000) 即可求小于即

7、可求小于1000的的Fibonacci數(shù)。數(shù)。 例例:編寫(xiě)函數(shù)求小于任意自然數(shù)編寫(xiě)函數(shù)求小于任意自然數(shù)n的的fibonnaci數(shù)。數(shù)。 13教育教學(xué) 遞歸調(diào)用:函數(shù)調(diào)用其本身 function f=factor(n) if n 提示符),用戶(hù)可以查看工作區(qū)中的變量, 也可改變變量的值。當(dāng)輸入return指令時(shí)返 回程序,繼續(xù)運(yùn)行。 調(diào)試方法 34教育教學(xué) n 程序的暫停:采用pause函數(shù)可以暫停程序, 直到用戶(hù)按任一鍵程序才繼續(xù)執(zhí)行。若要強(qiáng)行 中止程序的運(yùn)行,可用ctrl+c。 n return:結(jié)束所在函數(shù)的執(zhí)行,把控制權(quán)轉(zhuǎn)至 主調(diào)函數(shù)或指令窗。否則,只有待整個(gè)被調(diào)函 數(shù)執(zhí)行完后,才會(huì)轉(zhuǎn)出

8、。 n keyboard:將控制權(quán)交給鍵盤(pán),用于程序的調(diào) 試及在程序運(yùn)行中修改變量。 35教育教學(xué) n調(diào)試一個(gè)單獨(dú)的函數(shù)時(shí),可將函數(shù)改寫(xiě)為腳 本文件,此時(shí)可直接對(duì)輸入?yún)?shù)賦值,然后 以腳本方式運(yùn)行該M文件; n使用調(diào)試器使用調(diào)試器 可以準(zhǔn)確地找到運(yùn)行錯(cuò)誤。通過(guò)設(shè)置斷點(diǎn)可 使程序運(yùn)行到某行暫停,查看和修改工作空 間中的變量;也可以逐行運(yùn)行程序,對(duì)執(zhí)行 流程進(jìn)行完全監(jiān)控。 36教育教學(xué) 調(diào)試器Debug 它可幫助用戶(hù)正確地找到程序出錯(cuò)的 位置,其常和端點(diǎn)breakpoint配合使用。 n 調(diào)試手段有:設(shè)置斷點(diǎn)、跟蹤和觀(guān)察變量 37教育教學(xué) DebugDebug菜單項(xiàng)菜單項(xiàng) lStepStep(F1

9、0F10):?jiǎn)尾綀?zhí)行語(yǔ)句,對(duì)于函):?jiǎn)尾綀?zhí)行語(yǔ)句,對(duì)于函 數(shù)調(diào)用可將此函數(shù)一次執(zhí)行完畢數(shù)調(diào)用可將此函數(shù)一次執(zhí)行完畢 lStep InStep In(F11F11):?jiǎn)尾綀?zhí)行語(yǔ)句,遇到):?jiǎn)尾綀?zhí)行語(yǔ)句,遇到 函數(shù)時(shí)則進(jìn)入函數(shù)體內(nèi)單步執(zhí)行函數(shù)時(shí)則進(jìn)入函數(shù)體內(nèi)單步執(zhí)行 lStep OutStep Out(shift+F11shift+F11):從函數(shù)體內(nèi)):從函數(shù)體內(nèi) 運(yùn)行到函數(shù)體外,即從當(dāng)前位置運(yùn)行到運(yùn)行到函數(shù)體外,即從當(dāng)前位置運(yùn)行到 調(diào)用函數(shù)語(yǔ)句的下一條語(yǔ)句調(diào)用函數(shù)語(yǔ)句的下一條語(yǔ)句 38教育教學(xué) lRunRun(F5F5):從頭開(kāi)始執(zhí)行程序,直到遇到一):從頭開(kāi)始執(zhí)行程序,直到遇到一 個(gè)端點(diǎn)或程

10、序結(jié)束;個(gè)端點(diǎn)或程序結(jié)束; lRun to CursorRun to Cursor:從當(dāng)前位置運(yùn)行到光標(biāo)處;:從當(dāng)前位置運(yùn)行到光標(biāo)處; lExit Debug ModeExit Debug Mode:退出調(diào)試工具,同時(shí)結(jié)束:退出調(diào)試工具,同時(shí)結(jié)束 調(diào)試過(guò)程和程序運(yùn)行過(guò)程調(diào)試過(guò)程和程序運(yùn)行過(guò)程。 lSet/Clear BreakpointsSet/Clear Breakpoints(F12F12):設(shè)置或清):設(shè)置或清 除光標(biāo)所在行的斷點(diǎn)除光標(biāo)所在行的斷點(diǎn) lClear all BreakpointsClear all Breakpoints:清除所有斷點(diǎn):清除所有斷點(diǎn) 39教育教學(xué) 調(diào)試方法步

11、驟 n 設(shè)置斷點(diǎn):選中要設(shè)置的語(yǔ)句,用快捷鍵F12 或用工具條上的大紅點(diǎn)或點(diǎn)擊菜單set breakpoint 注:斷點(diǎn)設(shè)置后,在窗口左邊框上的大紅圓點(diǎn)注:斷點(diǎn)設(shè)置后,在窗口左邊框上的大紅圓點(diǎn) 表示,非常醒目。表示,非常醒目。 n設(shè)置斷點(diǎn)后,點(diǎn)擊菜單Debug|Run,程序便處 在調(diào)試狀態(tài)。而后程序會(huì)自動(dòng)在斷點(diǎn)處暫停, 此時(shí)左邊框上的對(duì)應(yīng)位置會(huì)出現(xiàn)一個(gè)綠色箭頭 指示被中斷的語(yǔ)句。 40教育教學(xué) n單步執(zhí)行各語(yǔ)句:此時(shí)可查看各變量的內(nèi)容, 以判斷程序流程是否正確。 n退出調(diào)試工具:選中菜單exit debug mode n清除斷點(diǎn):與設(shè)置方法相同。 41教育教學(xué) 因因collatz.m程序需要輸

12、入程序需要輸入 參數(shù)參數(shù)n,故查看輸出結(jié)果不,故查看輸出結(jié)果不 能用能用Run命令,而需在指命令,而需在指 令窗中輸入令窗中輸入collatz(5) 42教育教學(xué) 6.5 程序的優(yōu)化 n 避免使用循環(huán)(向量化編程) 要盡可能地使用向量或矩陣編程,而不是像 在其他語(yǔ)言中對(duì)向量或矩陣的元素編程。這樣, 不僅可以使程序較短,而且能大大提高運(yùn)行速度。 要求:編程者須熟悉數(shù)組運(yùn)算和要求:編程者須熟悉數(shù)組運(yùn)算和MATLABMATLAB的指令的指令 n 數(shù)組的預(yù)定義 數(shù)組空間預(yù)配置可提高運(yùn)行速度(對(duì)高階矩 陣的影響尤為明顯)以及內(nèi)存的利用率,否則數(shù) 組多次擴(kuò)維會(huì)增加內(nèi)存的碎片。 43教育教學(xué) clear v

13、r=0.89, 1.20, 3.09, 4.27, 3.62, 7.71, 8.99, 7.92, 9.70, 10.41; ir=0.028,0.040,0.100,0.145,0.118,0.258,0.299,0.257,0.308,0.345; L=length(vr) %計(jì)算數(shù)組的長(zhǎng)度計(jì)算數(shù)組的長(zhǎng)度 for k=1:L r(k)=vr(k)/ir(k); %根據(jù)各測(cè)量點(diǎn)計(jì)算電阻根據(jù)各測(cè)量點(diǎn)計(jì)算電阻 end sr=0; for k=1:L sr=sr+r(k); %計(jì)算所有電阻之和計(jì)算所有電阻之和 end rm=sr/L 計(jì)算電阻平均值計(jì)算電阻平均值 例:根據(jù)測(cè)得的一組電壓、電流值計(jì)算平均電阻值。例:根據(jù)測(cè)得的一組電壓、電流值計(jì)算平均電阻值。 44教育教學(xué) clear vr=0.89, 1.20, 3.09, 4.27, 3.62, 7.71, 8.99, 7.92, 9.70, 10.41; ir=0.028,0.040,0.100,0.145,0.

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論