在 MATLAB 中建立函式

Ammar Ali 2021年11月25日
在 MATLAB 中建立函式

本教程將討論在 MATLAB 中使用關鍵字 function 建立函式。

在 MATLAB 中使用關鍵字 function 建立一個函式

Matlab 中的函式主要由輸出、輸入和函式名稱三部分組成。要定義函式,我們使用 function 函式,然後定義函式的輸出、函式名稱和輸入。之後,我們將在函式中編寫我們的程式碼。函式名應以字母開頭,函式名可以包含數字、數字和下劃線。為了指示函式的結束,我們可以使用關鍵字 end。例如,請參閱下面的程式碼。

function outputs = function_Name(inputs)
    Your code
end

一個函式只能有一個輸出。例如,讓我們定義一個接受數字陣列的函式,該函式的輸出將是陣列的平均值。請參閱下面的程式碼。

vect = [1 3 5]
averg = average(vect)


function a = average(v)
a = mean(v);
end

輸出:

vect =

     1     3     5


averg =

     3

一個函式也可以有兩個輸出。例如,讓我們定義一個接受一個陣列的函式,它會給出陣列的均值和標準差。請參閱下面的程式碼。

vect = [1 3 5]
[averg, stanD] = average(vect)


function [a,s] = average(v)
a = mean(v);
s = std(v);
end

輸出:

vect =

     1     3     5


averg =

     3


stanD =

     2

我們可以在指令碼檔案中定義一個函式,但是我們必須在程式碼的末尾定義它。你還可以在單​​個檔案中定義多個函式,並且所有函式都必須位於程式碼的末尾。一個函式也可以呼叫另一個函式。比如你可以定義兩個函式,第二個函式可以呼叫第一個函式。我們還可以定義帶有輸入驗證的函式,以便我們可以檢查輸入。例如,讓我們定義一個函式,它會檢查輸入是否為整數,如果是整數,則執行操作;否則,它將傳送錯誤。我們可以使用可變引數來做到這一點。請參閱下面的程式碼。

vect = 'a';
[averg, stanD] = average(vect)


function [a,s] = average(v)
arguments
        v {mustBeNumeric, mustBeFinite}
    end
a = mean(v);
s = std(v);
end

輸出:

Error using Untitled>average
Invalid argument at position 1. Value must be numeric.

Error in Untitled (line 3)
[averg, stanD] = average(vect)

在上面的程式碼中,我們傳遞了一個字串而不是一個數字陣列,並且 Matlab 顯示了一個錯誤,指出該值必須是數字。請記住,當你呼叫函式時,你應該提供特定的輸入和輸出。例如,如果我們定義了一個有兩個輸入和兩個輸出的函式,我們應該在函式呼叫期間定義兩個輸入和兩個輸出;否則,它將顯示錯誤,但如果你想定義具有可變數量的輸出和輸入的函式。我們可以使用 varargin 變數來定義函式的變數輸入。我們可以使用變數 nargin 來告訴我們使用者輸入了多少個輸入。之後,我們可以為輸入指定條件。例如,我們可以定義要求,如果使用者輸入一個輸入,這將是輸出,如果使用者輸入兩個輸入,則這將是輸出,依此類推。例如,讓我們定義一個函式,該函式將為我們提供使用者輸入的輸入數量。請參閱下面的程式碼。

NumInputs('a',2,"start")

function NumInputs(varargin)
    disp("Number of inputs: " + nargin)
    celldisp(varargin)
end

輸出:

Number of inputs: 3
 
varargin{1} =
 
a
 
 
varargin{2} =
 
     2

 
 
varargin{3} =
 
start

我們還可以使用變數 varargout 在函式中定義變數輸出,並且我們可以跟蹤使用者使用變數 nargout 定義的輸出數量。例如,讓我們定義一個函式,該函式將為我們提供均值和標準差。如果使用者只定義一個輸出,函式將只返回陣列的平均值。如果使用者定義了兩個輸出變數,函式將返回標準偏差和陣列的平均值。請參閱下面的程式碼。

v = [1 2 6];
[m]= AVGSTD(v)
[mean,st] = AVGSTD(v)

function [m,varargout] = AVGSTD(v)
    m = mean(v);
    if(nargout>1)
        varargout{1} = std(v);
    end
end

輸出:

m =

     3


mean =

     3


st =

    2.6458

在上面的程式碼中,我們呼叫了函式 AVGSTD() 兩次,第一次只有一個輸出,第二次有兩個輸出。在第一次呼叫時,函式只返回平均值,但在第二次呼叫時,函式返回平均值和標準差。我們還可以使用變數引數驗證輸出的數量。例如,如果使用者嘗試在輸出中輸入兩個以上的變數,我們可以向他顯示此函式只接受兩個輸出的錯誤。我們還可以在 Matlab 中定義可重用的函式,這些函式將儲存在一個檔案中,我們可以使用檔名呼叫它們。要定義這樣的函式,我們只需要在函式名中命名 Matlab 檔案。例如,如果函式的名稱為 average,則 Matlab 檔案應具有相同的名稱。要呼叫該函式,我們必須在放置函式檔案的同一目錄中建立另一個指令碼檔案,我們可以在指令碼檔案中使用其名稱呼叫該函式。

作者: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

相關文章 - MATLAB Function