Programming and Data Types | ![]() ![]() |
サブ関数
Function M-ファイルは、複数の関数に対するコードを含むことができます。ファイルの中の最初の関数をメイン関数と言い、関数はM-ファイル名で読み込みます。ファイルの中の付加的な関数は、サブ関数で、同じファイルの中のメイン関数またはサブ関数にのみ表れているものです。
各々のサブ関数は、自分自身が関数であることを示す関数定義ラインから始めます。関数は、お互いに続けて記述します。種々のサブ関数は任意の順で並べることができますが、必ずメイン関数が先頭です。
function [avg,med] = newstats(u) % 基本関数 % NEWSTATS は、内部関数の mean とmedian を検出 n = length(u); avg = mean(u,n); med = median(u,n); function a = mean(v,n) % サブ関数 % 平均を計算 a = sum(v)/n; function m = median(v,n) % サブ関数 % 中央値を計算 w = sort(v); if rem(n,2) == 1 m = w((n+1)/2); else m = (w(n/2)+w(n/2+1))/2; end
サブ関数mean
, median
は、入力リストの平均と中央値を計算します。メイン関数newstats
は、入力の長さ
n を決め、サブ関数を読み込み、n
をこれらに渡します。同じM-ファイルの中の関数は、グローバル宣言をしない限り、また引数として渡さない限り、同じ変数をアクセスすることはできません。加えて、ヘルプ機能は、1つのM-ファイルの中でメイン関数のみにアクセスできます。
関数をM-ファイルの中から読み込むと、MATLABは、関数がサブ関数であるかどうかを知るためにファイルをチェックします。そして、その名前をもったプライベート関数かどうか、そして、ユーザのパス上にある標準のM-ファイルかをチェックします。まず、サブ関数に対して、チェックしているので、同じ名前をもつサブ関数を使っている既に存在するM-ファイルと取り替えます。たとえば、mean
は、このコードを使います。関数名は、そのM-ファイルの中ではユニークなものでなければなりません。
![]() |
return | プライベート関数 | ![]() |