天天看點

《MATLAB/Simulink系統仿真超級學習手冊》——2.5 檔案的編寫

本節書摘來自異步社群《matlab/simulink系統仿真超級學習手冊》一書中的第2章,第2.5節,作者:matlab技術聯盟 , 石良臣著,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

matlab/simulink系統仿真超級學習手冊

m檔案可分為腳本m檔案(簡稱腳本檔案)和函數m檔案(簡稱函數檔案)兩大類,其特點和适用領域均不同。

2.5.1 腳本檔案

腳本檔案是由matlab語句構成的文本檔案,以.m為擴充名。運作指令檔案的效果等價于從matlab指令視窗中按順序逐條輸入并運作檔案中的指令,類似于dos下的批處理檔案。

腳本檔案運作過程所産生的變量保留在matlab的工作空間中,腳本檔案也可以通路matlab目前工作空間的變量,其他腳本檔案和函數可以共享這些變量。是以,腳本檔案常用于主程式的設計。

【例2-17】編寫腳本檔案,對數a、b、c進行排序,并按從大到小的順序輸出。

(1)在matlab視窗中輸入a、b、c的數值,即下面語句:

(2)建立一個文本檔案,在該文本編輯視窗中輸入對數a、b、c進行排序的指令,并以檔案名ep2_17.m儲存,如圖2-17所示。

《MATLAB/Simulink系統仿真超級學習手冊》——2.5 檔案的編寫

注意:sort是matlab的内置函數,用于對矩陣進行排序,descend表示降序。

(3)在matlab指令視窗中輸入m檔案名,即ep2_17,得到下面結果。

注意:文本檔案ep2_17執行過程中,成功地通路了matlab工作空間的變量和資料a、b、c。

2.5.2 函數檔案

函數檔案是m檔案的另一種類型,它也是由matlab語句構成的文本檔案,并以.m為擴充名。matlab的函數檔案必須以關鍵字function語句引導,其基本結構如下:

函數檔案具有如下特點。

(1)函數名由讀者自定義,與變量的命名規則相同。

(2)儲存的檔案名必須與定義的函數名一緻。

(3)讀者可通過傳回參數及輸入參數來實作函數參數的傳遞,但傳回參數和輸入參數并不是必須的。傳回參數如果多于1個,則應該用中括号“[]”将它們括起來;輸入參數清單必須用小括号“()”括起來,即使隻有一個輸入參數。

(4)注釋語句段的每行語句都應該用%引導,%後面的内容不執行。使用者可用help指令顯示出注釋語句的内容,用于函數使用前的資訊參考。

(5)如果函數較複雜,則正規的參數格式檢測是必要的。如果輸入或傳回參數格式不正确,則應該給出相應的提示。

(6)函數中輸入和傳回參數的實際個數分别有matlab内部保留變量nargin和nargour給出,隻要運作了該函數,matlab将自動生成這兩個變量,是以使用者程式設計時可直接使用。

(7)與一般進階語言不同的是,函數檔案末尾處不需要使用end指令。

【例2-18】編寫函數檔案,以數a、b、c為函數參數,對數a、b、c進行排序,并按從大到小的順序輸出。

(1)建立一個文本檔案,在該文本編輯視窗中輸入下面的指令,并以檔案名ep2_18儲存在目前工作目錄中;

注意:這裡有對參數個數的檢測,參數個數等于3時排序指令才會執行。

(2)在matlab指令視窗中調用該函數檔案,得到下面的結果。

注意:調用函數檔案時,運作結果可儲存在任意名稱的變量下,不必與函數檔案中的傳回變量相同。

與腳本檔案相比,函數檔案的優點之一是實作了參數的傳遞,這極大地提高了檔案的通用性。例如,在分别用腳本檔案和函數檔案實作對數a、b、c的排序程式中,所用的指令幾乎一樣,但腳本檔案ep2_16隻能在目前工作視窗中使用,參數必須在工作空間中給定,而函數檔案ep2_17則可以被任何主程式或其他函數調用,參數可以任意設定。

【例2-19】編寫函數檔案,實作一個n行m列矩陣,使得該矩陣第i行第j列元素值為1/(i+j-1)。要求在編寫的函數中實作如下幾點:

(1)如果隻給出一個輸入,則會自動生成一個方陣;

(2)在函數中給出合适的注釋資訊;

(3)檢測輸入和傳回變量的個數,如果有錯誤則給出錯誤資訊。

編寫函數檔案ep2_19,在該檔案中輸入下面的語句:

在matlab指令視窗中調用函數ep2_19,計算結果如下:

繼續閱讀