- MATLAB 2022a從入門到精通
- 魏鑫等編著
- 2116字
- 2023-07-26 17:11:55
1.3 M文件

1.3
所謂M文件,簡單來說就是用戶首先把要實現的命令寫在一個以.m為擴展名的文件中,然后由MATLAB系統進行解讀,最后運行出結果。由此可見,MATLAB具有強大的可開發性和可擴展性。
1.3.1 M文件編輯器
在MATLAB中,M文件有函數和腳本兩種格式。兩者的相同之處在于它們都是以.m為擴展名的文本文件,不進入命令行窗口,而是由專用編輯器來創建外部文本文件。但是兩者在語法和使用上略有區別,下面分別介紹這兩種格式。
通常,M文件是文本文件,因此可使用一般的文本編輯器編輯M文件,存儲時以文本模式存儲,MATLAB內部自帶了M文件編輯器與編譯器。打開M文件編輯器方法如下:
(1)執行“主頁”→“文件”→“新建”→“腳本”命令。
(2)單擊“主頁”→“文件”→(新建腳本)按鈕。
(3)單擊“主頁”→“文件”→(新建實時腳本)按鈕。
打開M文件編輯器后的MATLAB主界面如圖1-8所示,此時主界面功能區出現“編輯器”選項卡,中間命令行窗口上方出現“編輯器”窗口。

圖1-8 M文件編輯器
編輯器是一個集編輯與調試兩種功能于一體的工具環境。在進行代碼編輯時,通過它可以用不同的顏色來顯示注解、關鍵詞、字符串和一般程序代碼,使用非常方便。在書寫完M文件后,也可以像一般的程序設計語言一樣,對M文件進行調試、運行。
1.3.2 函數
MATLAB中許多常用的函數(如sqrt、inv和abs等)都是函數式M文件。在使用時,MATLAB獲取傳遞給它變量,利用操作系統所給的輸入,運算得到要求的結果并返回這些結果。
函數文件類似于一個黑箱,由函數執行的命令及由這些命令創建的中間變量都是隱含的;運算過程中的中間變量都是局部變量(除特別聲明外),且被存放在函數本身的工作空間內,不會和MATLAB基本工作空間的變量相互覆蓋。
除MATLAB內置函數外,用戶還可以自行定義函數,通常用function進行聲明,下面通過一個示例進行說明,本書后文會做具體介紹。
【例1-4】函數應用示例。
(1)啟動MATLAB后,單擊“主頁”→“文件”→(新建腳本)按鈕,打開M文件編輯器窗口。
(2)在編輯器窗口中輸入以下內容(創建名為funa.m的M文件)。

(3)單擊“編輯器”→“文件”→(保存)按鈕,在彈出的“選擇要另存的文件”對話框中保存文件為funa.m。
(4)在命令行窗口中輸入以下命令并顯示輸出結果。

function函數的第一行為函數定義行,以function語句作為引導,定義了函數名稱(funa)、輸入自變量(var)和輸出自變量(f);函數執行完畢返回運行結果。
提示
函數名和文件名必須相同,在調用該函數時,需要指定變量的值,類似于C語言的形式參數。
function為關鍵詞,說明此M文件為函數,第二行為函數主體,規范函數的運算過程,并指出輸出自變量的值。
在函數定義行下可以添加注解,以%開頭,即函數的在線幫助信息。在MATLAB的命令行窗口中輸入“help函數主文件名”,即可看到這些幫助信息。
注意:
在線幫助信息和M函數定義行之間可以有空行,但是在線幫助信息的各行之間不應有空行。
1.3.3 腳本
腳本是一個擴展名為.m的文件,其中包含了MATLAB的各種命令語句。它與批處理文件類似,在MATLAB命令行窗口中直接輸入該文件的主文件名,MATLAB即可逐一執行該文件內的所有命令語句,這與在命令行窗口中逐行輸入這些命令語句一樣。
腳本式M文件運行生成的所有變量都是全局變量,運行腳本后,生成的所有變量都駐留在MATLAB基本工作空間內,只要不使用clear命令清除,且命令窗口不關閉,這些變量將一直保存在工作空間中。基本工作空間隨MATLAB的啟動而生成,在關閉MATLAB軟件時,該基本工作空間會被刪除。
【例1-5】腳本應用示例。求三元一次方程組的解。

(1)在編輯器窗口中輸入以下內容(創建名為sroot.m的M文件)。

(2)單擊“編輯器”→“文件”→(保存)按鈕,在彈出的“選擇要另存的文件”對話框中保存文件為sroot.m。
(3)在命令行窗口中輸入以下命令并顯示輸出結果。

從上面的求解可知,x=7,y=1,z=-2。上述用到了MATLAB中矩陣的輸入方式,本書后文將會介紹。
1.3.4 M文件遵循的規則
下面對M文件必須遵循的規則及兩種格式的異同做簡要說明。
(1)在M文件中(包括腳本和函數),所有注釋行都是幫助文本,當需要幫助時,返回該文本,通常用來說明文件的功能和用法。
(2)函數式M文件的函數名必須與文件名相同。函數式M文件有輸入參數和輸出參數;腳本式M文件沒有輸入參數或輸出參數。
(3)函數可以有零個或多個輸入和輸出變量。利用內置函數nargin和nargout可以查看輸入和輸出變量的個數。在運行時,可以按少于M文件中規定的輸入和輸出變量的個數進行函數調用,但不能多于這個標稱值。
(4)函數式M文件中的所有變量除特殊聲明外都是局部變量,而腳本式M文件中的變量都是全局變量。
(5)若在函數文件中發生了對某腳本文件的調用,該腳本文件運行生成的所有變量都存放于該函數工作空間中,而不是存放在基本工作空間中。
(6)從運行上看,與腳本文件不同的是,函數文件在被調用時,MATLAB會專門為它開辟一個臨時工作空間,稱為函數工作空間,用來存放中間變量,當執行完函數文件的最后一條命令或遇到return時,就結束該函數文件的運行。同時,該函數工作空間及其中所有的中間變量將被清除。函數工作空間相對于基本空間來說是臨時的、獨立的,在MATLAB運行期間,可以產生任意多個函數工作空間。
提示
變量的名稱可以包括字母、數字和下畫線,但必須以字母開頭,并且在M文件設計中是區分大小寫的。變量的長度不能超過系統函數namelengthmax規定的值。
- 邊做邊學:Photoshop圖像制作案例教程(Photoshop CC 2019·微課版)
- OpenStack實戰指南
- CoffeeScript Application Development
- Authorware應用案例教程
- SolidWorks 2019快速自學寶典
- Photoshop+CorelDRAW平面設計案例實戰:從入門到精通(視頻自學全彩版)
- 修片有道:PHOTOSHOP攝影后期專業技法
- 零基礎學Premiere Pro短視頻制作
- Maya Paint Effect 特效應用手冊
- VRP12虛擬現實編輯器標準教程
- Procreate數字繪畫實戰教程(全彩微課版)
- SolidWorks 2020中文版入門、精通與實戰
- 新手學UG NX 8.0輔助設計
- MySQL for Python
- Midjourney AI生圖與修圖從入門到精通