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
![]() |
関数ハンドル演算 | データタイプのテスト | ![]() |