Programming and Data Types    

関数ハンドル演算

MATLABは、関数ハンドルと関数名の文字列と間で、変換を行なう2つの関数を用意しています。変数が関数ハンドルを保持しているかを調べるテスト用の関数も用意していて、関数ハンドルを比較することもできます。

関数ハンドルを関数名に変換

文字の比較や表示のような文字演算を、関数ハンドルで行なう必要がある場合、文字列フォーマットの中の関数名を得るために、func2strを使うことができます。 関数ハンドルsinを文字列に変換するには、つぎのようにします。

例題 - エラーメッセージの中の関数名表示

ここで示す関数 catcherr は、関数ハンドルとデータ引数を受け入れ、そのハンドルを使って、関数を計算しようとします。関数が計算の実行に失敗すると、catcherr は、sprintf を使って、原因の関数の名前を与えるエラーメッセージを表示します。関数名は、それを表示するために、sprintf用の文字列でなければなりません。コードは、func2strを使って、関数ハンドルから関数名を引き出します。

下に示すように、catcherrへの最初のコールは、ハンドルをroundと正しいデータ引数に渡します。これは、正しいコールになり、期待した答えを出力します。二番目のコールは、同じ関数ハンドルと不適切なデータタイプ(MATLAB構造体)を渡します。このとき、roundは失敗して、失敗の原因の関数名を含むエラーメッセージの表示をcatcherr を使って行ないます。


  関数ハンドルのタイプ 関数名を関数ハンドルに変換