| Programming and Data Types |
関数名を関数ハンドルに変換
関数str2funcを使って、MATLAB関数名を含む文字列から関数ハンドルを作成することができます。文字列'sin'を、その関数に対するハンドルに変換するために、つぎのようにします。
fh = str2func('sin')
fh =
@sin
変数の中の関数名文字列を渡す場合、変数を受ける関数は、関数名をstr2funcを使って、関数ハンドルに変換します。つぎの例題は、変数funcnameを関数makeHandleに渡し、そして、関数ハンドルを作成するものです。
function fh = makeHandle(funcname)
fh = str2func(funcname);
% -- end of makeHandle.m file --
makeHandle('sin')
ans =
@sin
関数名文字列のセル配列に、str2func演算を適用することもできます。この場合、str2func
は、関数ハンドルの配列を出力します。
fh_array = str2func({'sin' 'cos' 'tan'})
fh_array =
@sin @cos @tan
例題 -
より柔軟性をもつパラメータのチェック
つぎの例題では、関数myminbndは、最初の引数に、関数ハンドルか、または、文字列のいずれかを受け取ることを期待しています。文字列を渡す場合、myminbndは、str2funcを使って、それから関数ハンドルを作成し、そして、str2funcへのコールの中で、そのハンドルを使います。
function myminbnd(fhandle, lower, upper)
if ischar(fhandle)
disp 'converting function string to function handle ...'
fhandle = str2func(fhandle);
end
fminbnd(fhandle, lower, upper)
ユーザが、関数ハンドル、または、関数名文字列のどちらかと共に、myminbndをコールする場合、適切に引数を取り扱うことができます。
myminbnd('humps', 0.3, 1)
converting function string to function handle ...
ans =
0.6370
| 関数ハンドル演算 | データタイプのテスト |