Programming and Data Types | ![]() ![]() |
エラー条件の取り扱い
存在しない関数へのハンドル
存在していない関数へのハンドルを作成しようとする場合、MATLAB
は、ハンドルがfeval
で計算できるとき、エラーを出力します。MATLAB
は、間違ったハンドルを割り当てることができ、 func2str
のような演算の中で使われますが、ランタイム演算の中でそれを使用しようとした場合、エラーになり、レポートされます。たとえば、
fhandle = @no_such_function; func2str(fhandle) ans = no_such_function feval(fhandle) ??? Error using ==> feval Undefined function 'no_such_function'.
関数ハンドルコンストラクタの中に含まれるパス
関数の前に符号@を使うか、または、関数str2func
を使って、関数ハンドルを作成します。どちらの場合でも、簡単な関数名のみを使って、関数を設定します。関数名は、パス情報を含んでいません。つぎのものは、どちらも、ハンドルを関数deblank
にうまく作成したものです。
fhandle = @deblank; fhandle = str2func('deblank');
つぎの例題は、パスを deblank.m
に含ませ、そして、エラーを出力するものです。
fhandle = str2func(which('deblank')) ??? Error using ==> str2func Invalid function name 'matlabroot\toolbox\matlab\strfun\deblank.m'.
非スカラ関数ハンドルの計算
関数 feval
は、関数ハンドルがスカラな場合のみ計算します。非スカラ関数ハンドルを共にfevalをコールすると、エラーになります。
feval([@sin @cos], 5) ??? Error using ==> feval Function_handle argument must be scalar.
![]() |
関数ハンドルのセーブとロード | 履歴について - 関数名の計算 | ![]() |