Matlab創建M文件以及程序控制

1.創建M文件

1.1 M文件的建立與打開

  • M文件是一個文本文件,它可以用任何編輯程序來建立和編輯,而一般常用且最爲方便的是使用MATLAB提供的文本編輯器。
    1.建立新的M文件
    爲建立新的M文件,啓動MATLAB編輯器有3種方法:

    • ① 在MATLAB主窗口選擇“主頁”選項卡,在“文件”命令組中單擊“新建腳本”命令按鈕。
      在這裏插入圖片描述
      輸入數據,點擊保存。
      在這裏插入圖片描述
      ② 在MATLAB命令行窗口輸入命令:
      edit 文件名
      啓動MATLAB編輯器後,輸入M文件的內容並存盤。
      ③ 在命令歷史窗口選中一些命令(按住Ctrl可同時選擇多條命令),然後從右鍵快捷菜單中選擇“創建腳本”命令,將會啓動MATLAB編輯器,並在編輯區中加入所選中的命令。

    2.打開已有的M文件
    打開已有的M文件,也有3種方法:

    • ① 菜單操作。在MATLAB主窗口選擇“主頁”選項卡,在“文件”命令組中單擊“打開”命令按鈕,再從彈出的下拉菜單中選擇“打開”命令,從“打開”對話框中選擇所需打開的M文件。
      在這裏插入圖片描述
    • ② 命令操作。在MATLAB命令窗口輸入命令:edit 文件名,則打開指定的M文件。
    • ③ 命令按鈕操作。單擊MATLAB主窗口工具欄上的Open File命令按鈕,再從彈出的對話框中選擇所需打開的M文件。

1.2 M文件的分類

  • 用MATLAB語言編寫的程序,稱爲M文件。M文件可以根據調用方式的不同分爲兩類:腳本文件(Script File)和函數文件(Function File)。
    在這裏插入圖片描述
    腳本文件和函數文件的主要區別如下:
    • ① 腳本文件沒有輸入參數,也不返回輸出參數,而函數文件可以帶輸入參數,也可返回輸出參數。
    • ② 腳本文件對MATLAB工作空間中的變量進行操作,文件中所有命令的執行結果也完全返回到工作空間中,而函數文件中定義的變量爲局部變量,當函數文件執行完畢時,這些變量被清除。
    • ③ 腳本文件可以直接運行,在MATLAB命令行窗口輸入腳本文件的名字,就會順序執行腳本文件中的命令,而函數文件不能直接運行,而要以函數調用的方式來調用它。

1.3 M文件的路徑修改

  • 方法一步驟:
    ① -> cd 想保存的文件夾路徑
    ② -> savepath
    樣例:

在這裏插入圖片描述

  • 方法二步驟:
    ① -> 右鍵單機matlab圖標打開屬性
    ② -> 將起始位置路徑保存爲自己想保存的路徑
    在這裏插入圖片描述

2.程序控制結構

2.1 順序結構

  • 1.數據的輸入
    從鍵盤輸入數據,則可以使用input函數來進行,該函數的調用格式爲:
    A=input(提示信息,選項);
    其中提示信息爲一個字符串,用於提示用戶輸入什麼樣的數據。
    如果在input函數調用時採用’s’選項,則允許用戶輸入一個字符串。
    例如:
    在這裏插入圖片描述
  • 2.數據的輸出
    MATLAB提供的命令窗口輸出函數主要有disp函數,其調用格式爲
    disp(輸出項)
    在這裏插入圖片描述
    其中輸出項既可以爲字符串,也可以爲矩陣。
  • 3.程序的暫停
    暫停程序的執行可以使用pause函數,其調用格式爲:
    pause(延遲秒數)
    如果省略延遲時間,直接使用pause,則將暫停程序,直到用戶按任一鍵後程序繼續執行。
    若要強行中止程序的運行可使用Ctrl+C命令。

2.2 選擇結構

  • 1.if語句
    在MATLAB中,if語句有3種格式。
    (1) 單分支if語句:if 條件->語句組->end
    當條件成立時,則執行語句組,執行完之後繼續執行if語句的後繼語句,若條件不成立,則直接執行if語句的後繼語句。
    在這裏插入圖片描述
    (2) 雙分支if語句:
    if 條件->語句組1->else->語句組2->end
    當條件成立時,執行語句組1,否則執行語句組2,語句組1或語句組2執行後,再執行if語句的後繼語句。
    在這裏插入圖片描述

(3) 多分支if語句:
if 條件1->語句組1->elseif 條件2->語句組2 ……elseif 條件m->語句組m->else->語句組n->end
在這裏插入圖片描述

2.switch語句

  • switch語句根據表達式的取值不同,分別執行不同的語句,其語句格式爲:
    switch 表達式->case 表達式1->語句組1->case 表達式2->語句組2 …… case 表達式m->語句組m->otherwise->語句組n->end
    在這裏插入圖片描述

  • Num2cell()函數
    num2cell的作用是把數值數組轉換爲cell數組
    最基本的用法是把數值數組的每個元素作爲cell數組的元素,得到一個和原數組維度完全相同的cell數組,例如:
    在這裏插入圖片描述

3.try語句
語句格式爲:try->語句組1->catch->語句組2->end

try語句先試探性執行語句組1,如果語句組1在執行過程中出現錯誤,則將錯誤信息賦給保留的lasterr變量,並轉去執行語句組2。
在這裏插入圖片描述

2.3 循環結構

  • 1.for語句
    for語句的格式1:
    for 循環變量=表達式1:表達式2:表達式3->循環體語句->end
    水仙花數:
    在這裏插入圖片描述
    for語句的格式2:
    for 循環變量=矩陣表達式->循環體語句->end
    執行過程是依次將矩陣的各列元素賦給循環變量,然後執行循環體語句,直至各列元素處理完畢。
    在這裏插入圖片描述

  • 2.while語句
    while語句的一般格式爲:
    while (條件)-> 循環體語句-> end
    其執行過程爲:若條件成立,則執行循環體語句,執行後再判斷條件是否成立,如果不成立則跳出循環。
    求輸入的數的和,當輸入0時停止在這裏插入圖片描述

  • 3.break語句和continue語句
    與循環結構相關的語句還有break語句和continue語句。它們一般與if語句配合使用。
    break語句用於終止循環的執行。當在循環體內執行到該語句時,程序將跳出循環,繼續執行循環語句的下一語句。
    continue語句控制跳過循環體中的某些語句。當在循環體內執行到該語句時,程序將跳過循環體中所有剩下的語句,繼續下一次循環。
    求[100,200]q區間內第一個能整除21的數:在這裏插入圖片描述

  • 4.循環的嵌套
    如果一個循環結構的循環體又包括一個循環結構,就稱爲循環的嵌套,或稱爲多重循環結構。
    求1-500間的完數:
    在這裏插入圖片描述

3. 函數文件

3.1 函數文件的基本結構

  • 函數文件由function語句引導,其基本結構爲:
    ->function 輸出形參表=函數名(輸入形參表)
    ->註釋說明部分
    ->函數體語句
    其中以function開頭的一行爲引導行,表示該M文件是一個函數文件。函數名的命名規則與變量名相同。輸入形參爲函數的輸入參數,輸出形參爲函數的輸出參數。當輸出形參多於一個時,則應該用方括號括起來。
    在這裏插入圖片描述

3.2 函數調用

  • 1.函數調用的一般格式是:
    [輸出實參表]=函數名(輸入實參表)
    要注意的是,函數調用時各實參出現的順序、個數,應與函數定義時形參的順序、個數一致,否則會出錯。函數調用時,先將實參傳遞給相應的形參,從而實現參數傳遞,然後再執行函數的功能。
  • 2.函數的遞歸調用
    在MATLAB中,函數可以嵌套調用,即一個函數可以調用別的函數,甚至調用它自身。一個函數調用它自身稱爲函數的遞歸調用。
    在這裏插入圖片描述

3.3 函數參數的可調性

  • 在調用函數時,MATLAB用兩個永久變量nargin和nargout分別記錄調用該函數時的輸入實參和輸出實參的個數。只要在函數文件中包含這兩個變量,就可以準確地知道該函數文件被調用時的輸入輸出參數個數,從而決定函數如何進行處理。
    在這裏插入圖片描述
    3.4 全局變量與局部變量
  • 函數文件中的變量是局部的,即在一個函數文件中定義的變量不能被另一個函數文件引用。如果在若干函數中都把某一變量定義爲全局變量,那麼這些函數將共用這個變量,作用域是整個工作空間,即全程有效。
    全局變量用global命令定義,格式爲:
    global 變量名

4. 特殊形式的函數

  1. 子函數
    在MATLAB中,可以在一個M文件中同時定義多個函數,其中M文件中出現的第一個函數稱爲主函數(primary function),其他函數稱爲子函數(subfunction),但需要注意的是子函數只能由同一M文件中的函數調用。在保存M文件時,M文件名一般和主函數名相同,外部程序只能對主函數進行調用。
  2. 內聯函數
    以字符串形式存在的函數表達式可以通過inline函數轉化成內聯函數。例如a=’(x+y)2’,可以通過f=inline(a)生成內聯函數f(x,y)=(x+y)2。

a=’(x+y)^2’;
f=inline(a)
f =
內聯函數:
f(x,y) = (x+y)^2

f(3,4)
ans =
49

  1. 匿名函數
    匿名函數的基本格式如下:
    匿名函數名=@(輸入參數) 匿名函數表達式
    其中,匿名函數的輸入參數可以是一個,也可以是多個,有多個參數時,參數間用逗號分隔。例如:

f=@(x,y) x ^ 2 + y ^ 2;
f(3,4)
ans =
25

5. 程序調試與優化

5.1 程序調試方法
一般來說,應用程序的錯誤有兩類,一類是語法錯誤,另一類是運行時的錯誤。語法錯誤包括詞法或文法的錯誤,例如函數名的拼寫錯、表達式書寫錯等。

程序運行時的錯誤是指程序的運行結果有錯誤,這類錯誤也稱爲程序邏輯錯誤。
1.利用調試函數進行程序調試
2.利用調試工具進行程序調試

5.2 程序性能分析與優化

1.程序性能分析
2. 程序優化
(1)採用向量化運算
在實際MATLAB程序設計中,爲了提高程序的執行速度,常用向量或矩陣運算來代替循環操作。
(2)預分配內存空間
通過在循環之前預分配向量或數組的內存空間可以提高for循環的處理速度。
(3)減小運算強度
在實現有關運算時,儘量採用運算量更小的運算,從而提高運算速度。一般來說,乘法比乘方運算快,加法比乘法運算快。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章