Main Content

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

スクリプトへの関数の追加

R2016b 以降は、ライブ スクリプトを含む MATLAB® のスクリプトに、関数を定義するコードを含めることができます。これらの関数は "ローカル関数" と呼ばれます。ローカル関数は、スクリプト内のコードを再利用する場合に便利です。ローカル関数を追加すると、別の関数ファイルの作成や管理を回避できます。関数を試す場合にも便利で、必要に応じて簡単に追加、変更、削除できます。

ローカル関数を含むスクリプトの作成

ローカル関数を含むスクリプトまたはライブ スクリプトを作成するには、[ホーム] タブに移動して、[新規作成][スクリプト] または [新規作成][ライブ スクリプト] を選択します。次に、コードをスクリプトに追加します。すべてのローカル関数を、ファイルの末尾、スクリプト コードの後に追加します。ローカル関数の前には、少なくとも 1 行のスクリプト コードを含めます。各ローカル関数は、独自の関数定義ステートメントで始まり、end キーワードで終わらなければなりません。関数の順番は任意です。

たとえば、mystats.m というスクリプトを作成します。

edit mystats

ファイルに、2 つのローカル関数 mymean および mymedian を含めます。スクリプト mystats は、配列を宣言し、配列の長さを特定し、ローカル関数 mymean および mymedian を使用して配列の平均値と中央値を計算します。

x = 1:10;
n = length(x);
avg = mymean(x,n);
med = mymedian(x,n);

function a = mymean(v,n)
% MYMEAN Local function that calculates mean of array.

    a = sum(v)/n;
end

function m = mymedian(v,n)
% MYMEDIAN Local function that calculates median of array.

    w = sort(v);
    if rem(n,2) == 1
        m = w((n + 1)/2);
    else
        m = (w(n/2) + w(n/2 + 1))/2;
    end
end

ライブ スクリプトにローカル関数を追加すると、MATLAB は最初のローカル関数定義の前にセクション区切りを自動的に追加して、その後のすべてのセクション区切りを削除します。これは、ライブ スクリプトがローカル関数内の個々のセクションをサポートしないためです。

ローカル関数を含むスクリプトの実行

ローカル関数を含むスクリプトまたはライブ スクリプトを実行するには、[エディター] または [ライブ エディター] タブで、 [実行] ボタンをクリックします。保存したスクリプト名をコマンド ウィンドウに入力することもできます。

個々のセクションを実行するには、セクション内にカーソルを配置して、 [セクションの実行] ボタンを使用します (.m ファイルについては R2017b 以降が必要)。.mlx ファイルでは、ローカル関数定義の前にある場合のみ、セクションを実行できます。

ローカル関数および変数の制限

ローカル関数は、定義元のファイル内でのみ参照できます。他のファイル内の関数からは参照できず、コマンド ウィンドウから呼び出すことはできません。

現在のファイルにあるローカル関数は、他のファイルの関数よりも優先されます。つまり、あるスクリプト内で関数を呼び出す場合、MATLAB は他の場所で関数を検索する前に、呼び出す関数がローカル関数かどうかを確認します。これにより、別のファイルでオリジナルを保持しながら、特定の関数の別のバージョンを作成できます。

スクリプトは、ベース ワークスペース内で変数を作成し、アクセスします。ローカル関数は、その他すべての関数と同様に、ベース ワークスペースとは別の独自のワークスペースをもっています。ローカル関数は、引数として渡される場合を除いて、他の関数のワークスペース内またはベース ワークスペース内の変数にアクセスできません。

ローカル関数のヘルプへのアクセス

コマンド ラインや他のファイルの関数からローカル関数を呼び出すことはできませんが、そのヘルプには help コマンドを使用してアクセスできます。スクリプトとローカル関数の両方の名前を > 文字で区切って指定します。

以下に例を示します。

help mystats>mymean
 mymean Local function that calculates mean of array.

関連するトピック