在 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 檔案應具有相同的名稱。要呼叫該函式,我們必須在放置函式檔案的同一目錄中建立另一個指令碼檔案,我們可以在指令碼檔案中使用其名稱呼叫該函式。