




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第六章 M文件程序設計根底主要內容M文本編輯器M文件MATLAB的數據類型MATLAB控制流程序調試函數句柄一、M文件M腳本命令文件M函數文件部分變量和全局變量M文件的普通構造變量的檢測傳送和限權運用函數1、M腳本命令文件Script 是假設干命令和函數的集合,執行特定的功能 不存在參數的輸入和輸出 在MATLAB環境下,腳本可以直接訪問整個任務空間的變量;而且由腳本建立的變量在腳本文件執行終了后仍堅持在任務空間中,直到clear命令去除為止。例:建立fibonnaci.m文件,其內容如下:%計算Fibonnaci數clear;f(1)=1;f(2)=1;for n=1:1:8 f(n+2)=
2、f(n)+f(n+1);endf2、M函數文件 Function 函數不但可以接受輸入參數,還可以輸出參數 存儲函數的M文件的文件名必需與函數名一致 函數只能訪問本身空間的變量 每當函數文件運轉,MATLAB就會專門為它開辟一個暫時函數任務空間(Function workspace)。一切中間變量都存放在函數任務空間中。當執行完文件最后一條指令或遇到return時,就終了該函數文件的運轉,同時該暫時函數空間及其一切的中間變量就立刻被去除。MATLAB允許運用比“標稱數目較少的輸入輸出宗量,實現對函數的調用。函數空間隨詳細M函數文件的被調用而產生,隨調用終了而刪除。函數空間是相對獨立的、暫時的。
3、在MATLAB整個運轉期間,可以產生恣意多個暫時函數空間。假設在函數文件中,發生對某腳本文件的調用,那么該腳本文件運轉產生的一切變量都存放于該函數空間之中,而不是存放在根本空間。例:把前例計算fibonnaci數的腳本文件改成函數文件如下:function f=fibo(N)%FIBO; 計算參數N個Fibonnaci數的函數文件%f=fibo(N); N可取恣意自然數%.%編寫于.f(1)=1; %初始化1f(2)=1; %初始化2for n=1:N f(n+2)=f(n)+f(n+1);end;3、部分變量和全局變量部分Local變量它存在于函數空間內部的中間變量,產生于該函數的運轉過程中
4、,其影響范圍也僅限于該函數本身。全局Global變量經過global指令,MATLAB也允許幾個不同的函數空間以及根本空間共享一個變量。這種被共享的變量稱為全局變量。每個希望共享全局變量的函數或MATLAB根本任務空間,必需逐個用global對詳細變量加以專門定義。沒采用global定義的函數或根本空間,將無權享用全局變量。假設某個函數的運作使全局變量的內容發生了變化,那么其他函數空間以及根本任務空間中的同名變量也就隨之變化。除非與全局變量聯絡的一切任務空間都被刪除,否那么全局變量依然存在。3、部分變量和全局變量4、M文件的普通構造由于從構造上看,腳本文件只是比函數文件少一個“函數聲明行。典型
5、M函數文件的構造:函數聲明定義行(Function declaration line):H1行(The first help text line):在線協助文本(Help text)區:編寫和修正記錄:函數體(Function body):函數聲明定義行(Function declaration line)位于函數文件的首行,以MATLAB關鍵字function開頭,函數名以及函數的輸入輸出宗量都在這一行定義。H1行(The first help text line):緊隨函數聲明行之后以%開頭的第一注釋行。按MATLAB本身文件的規那么,H1行包含:大寫體的函數文件名;運用關鍵詞簡要描畫的函
6、數功能。該H1行供lookfor關鍵詞查詢和help在線協助運用。在線協助文本(Help text)區:H1行及其之后的延續以%開頭的一切注釋行構成整個在線協助文本。它通常包括:函數輸入輸出宗量的含義,調用格式闡明。編寫和修正記錄與在線協助文本區相隔一個空行,也以%開頭,標志編寫及修正該M文件的作者和日期、版本記錄。它用于軟件檔案管理。函數體(Function body):為明晰起見,它與前面的注釋行以空行相隔。這部分內容由實現該M函數文件功能的MATLAB指令組成。它接納輸入宗量,進展程序流控制,得到輸出宗量。其中為閱讀、了解方便,也配置適當的空行和注釋。假設注解行很多,可以用注解塊操作符%
7、5、變量的檢測傳送和限權運用函數 輸入輸出宗量檢測指令跨空間變量傳送子函數和私用函數輸入輸出宗量檢測指令nargin在函數體內,用于獲取實踐輸入宗量nargout在函數體內,用于獲取實踐輸出宗量nargin(fun)獲取fun指定函數的標稱輸入宗量數nargout(fun)獲取fun指定函數的標稱輸出宗量數inputname(n)在函數體內運用,給出第n個輸入宗量的實踐調用變量名跨空間變量傳送全局變量函數輸入參數跨空間計算串表達式的值跨空間賦值跨空間計算串表達式的值evalin(workspace,expression)跨空間計算串表達式值workspace可取兩個值:base和callerB
8、ase:表示計算eval(expression時,將從根本任務空間獲得變量值。Caller:表示計算eval(expression時,將從主調函數任務空間獲得變量值。主調函數是相對被調函數而言的。這里,被調函數是指evalin所在的函數。evalin(workspace,expression1, expression2)跨空間計算替代串表達式值workspace可取兩個值:base和caller該調用格式的執行機理:先從所在函數空間獲得變量值用eval(expression1計算原串表達式;假設該計算失敗,那么在從workspace 指定的根本或主調函數任務空間獲取變量值,再經過eval(ex
9、pression2計算替代串表達式 。跨空間賦值assignin(workspace,VN,x)把當前任務空間內變量x的值賦給workspace指定空間名的VN變量。子函數MATLAB允許一個M函數文件包含多個函數的代碼。其中,第一個出現的函數稱為主函數(Primary function),該文件中的其他函數稱為子函數(Subfunction)。保管時所用的函數名與主函數定義名一樣。外部程序只能對主函數進展調用。子函數的性質:每個子函數的第一行是其本人的函數聲明行。在M函數文件內,主函數的位置不可改動,但子函數的陳列次序可恣意改動。子函數只能被處于同一文件的主函數或其他子函數調用。在M函數文件
10、中,任何指令經過“名字對函數進展調用時,子函數的優先級僅次于內裝函數。同一文件的主函數、子函數的任務空間都是彼此獨立的。各函數間的信息,或經過輸入輸出宗量傳送,或經過全局變量傳送,或經過跨空間指令傳送。查看子函數的注釋用help mainfun/subfun的方式私用部分函數所謂私用部分函數,是指位于private目錄上的M文件函數。私用部分函數的性質:私用部分函數的構造與普通M函數完全一樣。私用部分函數的只能被private目錄的直接父目錄上的M函數文件所調用。它不能被其他目錄上的任何M函數、M腳本文件或MATLAB指令窗中的命令所調用,也不能被直接父目錄上的M腳本文件調用。M文件中,任何指
11、令經過“名字對函數進展調用時,私用部分函數的優先級雖低于內裝函數和子函數,但高與其他任何目錄上的函數。help,lookfor等指令都不能提供關于私用部分函數的任何協助信息。二、MATLAB的數據類型6種根本數據類型及假設干衍生類型。數據類型Data Types數值Numeric字符串Char元胞Cell構架Structure函數句柄Function handleJAVA類JAVA Class雙精度double單精度single整數類Int*,uint*稀疏sparse數據文件MATLAB允許接受的數據文件大致可分為以下幾類:以.mat為擴展名的二進制數據文件。以.txt、.dat為擴展名的A
12、SCII碼數據文件。以.bmp、.jpg、.tif等為擴展名的圖像文件。以.wav為擴展名的聲音文件。三、MATLAB控制流for循環構造while循環構造 if-else-end分支構造 switch-case構造 try-catch構造 控制程序流的其它常用指令 1、for循環構造for x=array(commands)endarray也可以為二維mn,此時,以arry的列數n作為循環次數。每次循環時,將數組的每一列向量賦給x2、while循環構造while expression(commands)end當expression為空數組時,條件斷定為假假設expression為數組,只需它
13、一切元素的值不為,條件才為真3、if-else-end分支構造單分支雙分支多分支if expression (commands)endif expression (commands1)else (commands2)endif expression1 (commands1)elseif expression2 (commands2)else (commandsk)end常用常用該使用方法常被switch-case所取代4、switch-case構造switch express case test1 (commands1)case test2 (commands2)case testk (com
14、mandsk)otherwise(commands)endExpress可以是數值或字符串表達式5、try-catch構造try(commands1)catch(commands2)end組命令1總被執行。假設正確,那么跳出此構造僅當組命令1出現執行錯誤,組命令2才被執行假設組命令2出錯,那么直接退出循環,除非,其中有try catch語句6、控制程序流的其它常用指令指令及使用格式使用說明v=input(message)v=input(message,s)該指令執行時,“控制權”交給鍵盤;待輸入結束,按下Enter鍵,“控制權”交還MATLAB。message是提示用的字符串。第一種格式用于鍵
15、入數值、字符串、元胞數組等數據;第二種格式,不管鍵入什么,總是以字符串形式賦給變量vkeyboard遇到keyboard時,將“控制權”交給鍵盤,用戶可從鍵盤輸入各種MATLAB指令。僅當用戶輸入return指令后,“控制權”才交還給程序。它與input的區別是:它允許輸入任意多個MATLAB指令,而input只能輸入賦給變量的值breakbreak指令可導致包含該指令的while、for環終止;也可在if-end,switch-case,try-catch中導致中斷continue跳過位于其后的循環中的其他指令,執行循環的下一個迭代pausepause(n)第一種格式使程序暫停執行,等待用戶
16、按任意鍵繼續;第二種格式使程序暫停n秒后,再繼續執行指令及使用格式使用說明return結束return指令所在函數的執行,而把控制轉至主調函數或指令窗。否則,只有待整個被調函數執行完后,才會轉出error(message)顯示出錯信息message,終止程序lasterr顯示最新出錯原因,并終止程序lastwarm顯示MATLAB自動給出的最新警告程序繼續運行warning(message)顯示警告信息message,程序繼續運行6、控制程序流的其它常用指令四、程序調試與優化程序調試概述普通調試技巧程序調試器的運用程序設計的優化M文件調用記錄程序調試概述MATLAB的調試器(Debugger)
17、可以迅速地幫您找出程序錯誤所在,其功能包含:查詢每一個函數的任務空間(Workspace).顯示函數調用的堆棧(Function Call Stack).一行一行地執行M文件.普通調試技巧普通而言,計算機程序能夠發生的錯誤可分為兩種:語法錯誤Syntax Errors邏輯錯誤Logic Errors普通檢測邏輯錯誤的方法:刪除表達式最尾端的分號。假設調試一個單獨函數,可在其第一行的函數聲明行加上%,并定義輸入變量的值,直接以腳本的方式來執行此M文件,并保管一切變量于MATLAB任務空間中,以便后續查看及調試。在程序中參與keyboard命令,可使程序執行至此處即暫停,并顯示“k的提示號。此時可恣意查看或改動任務空間的任何變量。假設要繼續執行程序,可在命令窗輸入“return并按下Enter鍵。運用MATLAB程序調試器。程序設計的優化以矩陣運算替代循環運算數據的預定義內存的管理五、函數句柄函數句柄(Function handle)是MATLAB6.0版啟用的新數據類型。它保管著“為該函數創建句柄時的途徑、視野、函數名,以及能夠存在的重載方法。函數句柄的創建和察看函數句柄并不是伴隨函數文
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 江蘇蘇州2024~2025學年高二下冊6月期末考試數學試題含解析
- 地方特色教育課程與公民素養教育融合考核試卷
- 2025年中國PE信封粘膠袋數據監測研究報告
- 2025年中國LCD彩色監視器數據監測研究報告
- 2025年中國DWDM密集波分復用測試儀數據監測研究報告
- 2025年中國6毫米CNG高壓鋼管PVC數據監測研究報告
- 2025年中國16路混合器數據監測報告
- 2025至2030年中國高真空擴散泵油市場分析及競爭策略研究報告
- 2025至2030年中國防毒面具箱市場分析及競爭策略研究報告
- 2025至2030年中國針型皮帶扣市場分析及競爭策略研究報告
- 2025至2030中國合規行業發展趨勢分析與未來投資戰略咨詢研究報告
- 【人教版】河北石家莊2024-2025學年 四年級下學期期末數學試題【一】有解析
- 施工費用控制管理制度
- 律師事務所數據管理制度
- 2025年衛生系統招聘考試《職業能力傾向測試》新版真題卷(附詳細解析)
- 大學生心理健康教育導論
- 2025-2030年中國下一代測序(NGS)數據分析行業市場現狀供需分析及投資評估規劃分析研究報告
- 河南省洛陽市2024-2025學年高二下學期6月期末質檢物理試卷(含答案)
- 浙江理工大學《統計學與R語言》2023-2024學年第二學期期末試卷
- 安全生產獎罰管理制度
- 2025年全省民政行業職業技能大賽(孤殘兒童護理員)備考試題庫(含答案)
評論
0/150
提交評論