MATLAB で関数を作成する
このチュートリアルでは、MATLAB で変数 function
を使用して関数を作成する方法について説明します。
MATLAB で変数 function
を使用して関数を作成する
Matlab の関数は、主に出力、入力、関数名の 3つで構成されています。関数を定義するには、変数 function
を使用してから、関数の出力、関数名、および入力を定義します。その後、関数内にコードを記述します。関数名は英字で始める必要があり、関数名には数字、数字、およびアンダースコアを含めることができます。関数の終わりを示すために、変数 end
を使用できます。たとえば、以下のコードを参照してください。
function outputs = function_Name(inputs)
Your code
end
関数は 1つの出力しか持つことができません。たとえば、数値の配列を受け入れる関数を定義すると、関数の出力は配列の平均になります。以下のコードを参照してください。
vect = [1 3 5]
averg = average(vect)
function a = average(v)
a = mean(v);
end
出力:
vect =
1 3 5
averg =
3
関数は 2つの出力を持つこともできます。たとえば、1つの配列を受け入れる関数を定義すると、配列の平均と標準偏差が得られます。以下のコードを参照してください。
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
スクリプトファイルで関数を定義できますが、コードの最後で定義する必要があります。1つのファイルに複数の関数を定義することもできます。すべての関数はコードの最後にある必要があります。1つの関数が別の関数を呼び出すこともできます。たとえば、2つの関数を定義し、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 は、値が数値でなければならないというエラーを示しています。関数を呼び出すときは、特定の入力と出力を提供する必要があることに注意してください。たとえば、2つの入力と 2つの出力を持つ関数を定義した場合、関数呼び出し中に 2つの入力と 2つの出力を定義する必要があります。それ以外の場合はエラーが表示されますが、出力と入力の数が可変の関数を定義する場合。varargin
変数を使用して関数の変数入力を定義することで、これを行うことができます。ユーザーが入力した入力の数を示す変数 nargin
を使用できます。その後、入力の条件を指定できます。たとえば、ユーザーが 1つの入力を入力するとこれが出力になり、ユーザーが 2つの入力を入力するとこれが出力になるという要件を定義できます。たとえば、ユーザーが入力した入力の数を提供する関数を定義しましょう。以下のコードを参照してください。
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
を使用してユーザーが定義した出力の数を追跡することもできます。たとえば、平均と標準偏差を与える関数を定義しましょう。ユーザーが 1つの出力のみを定義した場合、関数は配列の平均のみを返します。ユーザーが 2つの出力変数を定義すると、関数は標準偏差と配列の平均を返します。以下のコードを参照してください。
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()
を 2 回呼び出しました。1 回目は 1つの出力のみで、2 回目は 2つの出力で呼び出しました。最初の呼び出しでは、関数は平均のみを返しましたが、2 番目の呼び出しでは、関数は平均と標準偏差を返しました。変数引数を使用して、出力の数を検証することもできます。たとえば、ユーザーが出力に 3つ以上の変数を入力しようとすると、この関数が 2つの出力のみを受け入れるというエラーを表示できます。Matlab で再利用可能な関数を定義することもできます。これはファイルに保存され、ファイル名を使用して呼び出すことができます。このような関数を定義するには、関数の名前で Matlab ファイルに名前を付ける必要があります。たとえば、関数の名前が average の場合、Matlab ファイルの名前は同じである必要があります。関数を呼び出すには、関数ファイルが配置されているのと同じディレクトリに別のスクリプトファイルを作成する必要があり、スクリプトファイル内の名前を使用して関数を呼び出すことができます。