官术网_书友最值得收藏!

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規定的值。

主站蜘蛛池模板: 基隆市| 博野县| 大埔区| 卢龙县| 禹州市| 临夏市| 新密市| 自贡市| 手游| 甘德县| 马关县| 千阳县| 莱芜市| 喀喇沁旗| 武清区| 大名县| 晋中市| 翁牛特旗| 基隆市| 申扎县| 文山县| 汉阴县| 合作市| 武川县| 巩留县| 新竹县| 陈巴尔虎旗| 蓬溪县| 通山县| 土默特左旗| 喜德县| 自贡市| 龙门县| 衡水市| 揭西县| 金阳县| 鹤壁市| 克山县| 镇远县| 宁河县| 海南省|