Main Content

function_handle

説明

関数ハンドルは、関数を表す MATLAB® データ型です。一般に、関数ハンドルは関数を別の関数に渡すために使用します。たとえば、関数ハンドルは、所定の値の範囲に対して数式を評価する関数の入力引数として使用できます。関数ハンドルのその他の用途には以下があります。

  • コールバック関数の指定 (たとえば、UI イベントに応答したり、データ収集ハードウェアと相互作用するコールバック)。

  • プログラム ファイルに保存されているものではなくインラインで定義されている関数 (無名関数) へのハンドルの作成。

作成

@ 演算子を使用して関数ハンドルを作成します。関数ハンドルは、名前付き関数または無名関数を表すことができます。

  • "名前付き関数ハンドル" は、MATLAB の一部である関数と、function キーワードを使用して作成した関数を含む、既存のプログラム ファイルの関数を表します。名前付き関数ハンドルを作成するには、関数名の前に @ を付けます。

    たとえば、関数 sin のハンドルを作成した後に、fminbnd を使用して、sin(x) を 0 ~ 2 π で最小化する x の値を求めます。

    f = @sin;
    m = fminbnd(f,0,2*pi);
  • "無名関数ハンドル" ("無名関数" とも呼ばれる) は、1 つの出力を返す単一のインライン実行可能式を表します。無名関数を定義するには、@ 演算子の直後に入力引数をかっこで囲み、実行可能な式を指定します。

    たとえば、式 x2 − y2 を評価する無名関数へのハンドルを作成します。

    f = @(x,y) (x.^2 - y.^2);

    無名関数は、複数の入力を受け入れることができますが、1 つの出力のみ返します。

すべて折りたたむ

現在のフォルダー内のファイルで、入力を受け入れる cubicPoly という名前の関数を作成して 3 次多項式 x3+x2+x+1 を評価します。

function y = cubicPoly(x)
y = x.^3 + x.^2 + x + 1; 
end

01cubicPoly の積分を求めるには関数 cubicPoly のハンドルをintegralに渡します。

q = integral(@cubicPoly,0,1)
q = 2.0833

指定された値 x に対する 3 次多項式 x3+x2+x+1 を評価する無名関数のハンドル f を作成します。

f = @(x) x.^3 + x.^2 + x + 1;

01 の無名関数の積分を求めるには、そのハンドルを integral に渡します。

q = integral(f,0,1)
q = 2.0833

拡張機能

バージョン履歴

R2006a より前に導入

すべて展開する