- MATLAB計算機視覺經典應用
- 丁偉雄編著
- 1260字
- 2022-05-06 19:59:42
1.8 M文件
MATLAB提供了M文件。M文件有兩類:腳本文件和函數文件,這兩類文件都以.m為擴展名。腳本M文件可以理解為較為簡單的M文件,因為它沒有輸入/輸出變量。函數M文件相對腳本M文件稍顯復雜,從表面上來看,函數M文件只是在同功能的腳本M文件的基礎上,在文件代碼的開始處多添加了一行函數聲明而已。
用戶可以自己定義M函數文件然后調用它。這樣,只需傳遞給它相應的參數,即可將結果輸出給用戶。用戶只看到輸入的參數和輸出的計算結果,即一個函數就是一個黑箱。這些特性使得函數在解決某些問題的較大型程序中占據著很重要的位置,因而,MATLAB提供了一個結構,用來以文本M函數文件的形式創建用戶自己的函數。
M函數文件是一個以.m為后綴的文本文件,函數需要給定一些輸入參數,并能夠對輸入變量進行若干操作而實現特定的功能,然后將所需結果輸出。M函數文件必須滿足一些標準。
(1)在存儲M函數文件時,文件名必須與文件內主函數名一致,這是因為,在調用M函數文件時,系統查詢的是相應的文件名而不是函數名,如果兩者不一致,則打不開目的文件或打開的是其他文件。因此,在存儲M函數文件時,應將文件名與主函數名統一,以便理解與使用。
(2)M函數文件名最多可以有31個字符,這是由操作系統決定的,有些系統可能允許的最大字符數還要少。MATLAB會忽略第31個(或操作系統限制的)字符以外的字符。
(3)函數名必須以一個字母開頭,第一個字母之后可以是任意的字母、數字、下畫線,這個命名規則與變量的命名規則相同。
(4)函數語句的第一行是函數聲明行,且必須包含function這個詞,在該行要聲明函數名、輸入變量列表及輸出變量列表等。
(5)在函數聲明行之后,第一個連續的注釋行是該函數的幫助主題,也稱H1行,當使用lookfor命令時,可以查看該行信息。H1行通常包含的是大寫的函數名,以及這個函數功能的一個簡要描述。
(6)H1行之后至第一個可執行或空行之間的所有注釋語句均為幫助信息,這部分給出了函數的完整幫助信息。當通過MATLAB幫助系統查看函數的幫助信息時,看到的是這部分內容。
(7)一個連續的注釋行之后的所有語句構成了函數體,它是實現編程目的的核心所在,可以包括任何可執行的MATLAB語句。
(8)一個M函數文件在函數的任何地方遇到return或這個函數的最后一行被執行完時終止。
(9)在函數體中,對語句的解釋和說明文本即注釋部分,注釋語句是以%開頭的。
(10)在M函數文件中,只有H1行是一個M函數文件所必需的,其他內容都是可以省略的,當然,如果沒有函數體,則該函數為一空函數,不能產生任何作用。
【例1-8】漢諾塔(又稱河內塔)問題是印度的一個古老傳說:神勃拉瑪在一個廟里留下了3根金剛石棒,第一根上面套著64個圓的金片,最大的一個在底下,其余的一個比一個小,依次疊上去,廟里的眾僧把它們一個個地從這根棒上搬到另一根棒上,規定可利用中間的一根棒作為輔助,但每次只能搬一個,而且大的不能放在小的上面。
根據需要,建立一個帶移動箭頭的M函數文件move.m,代碼為:

建立一個實現漢諾塔問題的M函數文件hannuo.m,代碼為:

保存M函數文件,并在命令行窗口中輸入以下代碼:

運行程序,輸出如下:

- PrestaShop 1.3 Theming – Beginner’s Guide
- Microsoft Visual C++ Windows Applications by Example
- AutoCAD 2017實用教程
- 創意UI:Photoshop玩轉移動UI設計
- CoffeeScript Application Development
- 微信小程序開發入門與實踐
- Puppet 2.7 Cookbook
- CorelDRAW X5實用教程(第2版)
- Premiere pro CC中文版自學視頻教程
- OpenCV項目開發實戰(原書第2版)
- 中文版Illustrator 2020基礎教程
- JBoss RichFaces 3.3
- Flash CS6 動畫制作實戰從入門到精通
- Kubernetes快速入門(第2版)
- AutoCAD 2018中文版完全自學手冊