関数ハンドルを使用したローカル関数の呼び出し
この例では、ローカル関数へのハンドルを作成する方法を説明します。関数がローカル関数へのハンドルを返す場合、メイン関数の外部にあるローカル関数を呼び出すことができます。この方法により、1 つのファイルに複数の呼び出し可能な関数をもつことができます。
作業フォルダー内のファイル ellipseVals.m
に次の関数を作成します。この関数はローカル関数へのハンドルをもつ struct を返します。
% Copyright 2015 The MathWorks, Inc. function fh = ellipseVals fh.focus = @computeFocus; fh.eccentricity = @computeEccentricity; fh.area = @computeArea; end function f = computeFocus(a,b) f = sqrt(a^2-b^2); end function e = computeEccentricity(a,b) f = computeFocus(a,b); e = f/a; end function ae = computeArea(a,b) ae = pi*a*b; end
関数を呼び出して、ローカル関数へのハンドルの struct
を取得します。
h = ellipseVals
h = struct with fields: focus: @computeFocus eccentricity: @computeEccentricity area: @computeArea
ハンドルを使用してローカル関数を呼び出し、楕円の面積を求めます。
h.area(3,1)
ans = 9.4248
代わりに、関数 localfunctions
を使用して、すべてのローカル関数から関数ハンドルの cell 配列を自動的に作成することができます。この方法は、ローカル関数の名前を追加、削除または変更する必要がある場合に便利です。