このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
スクリプトへの関数の追加
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.