MATLAB Function Reference | ![]() ![]() |
表示
[y1,y2,...] = feval(fhandle,x1,...,xn) [y1,y2,...] = feval(function,x1,...,xn)
詳細
[y1,y2,...] = feval(fhandle,x1,...,xn)
は、引数 x1
から xn
を使って、関数ハンドル fhandle
を計算します。関数ハンドルが、複数の組み込み関数やM-ファイル(多重定義関数の集合を表す)に関係している場合、引数 x1
から xn
のデータタイプを使って、処理する関数を決定します。
[y1,y2...] = feval(function,x1,...,xn)
function
が、関数名(通常、M-ファイルで定義される)を含む文字列である場合、feval(function,x1,...,xn
) は、与えられた引数で、関数を計算します。パラメータfunction
は、単に関数名のみである必要があります。すなわち、パスの情報を含むことはできません。
注意
参照により関数を計算するより良い方法は、関数ハンドルを使うことです。後位互換をサポートするために、feval は、最初の引数として関数名を表す文字列を設定します。しかし、関数ハンドルは、関数ハンドルの概要の節に記述されている、付加的なパフォーマンス、信頼性、ソースファイルコントロールに関する良さを提供しています。
|
注意
[V,D] = eig(A) [V,D] = feval(@eig,A)
例題
つぎの例題は、関数ハンドル fhandle
を、コール時に fminbnd
に渡します。引数 fhandle
は、関数 humps
へのハンドルです。
fhandle = @humps; x = fminbnd(fhandle, 0.3, 1);
関数 fminbnd
は、feval
を使って、渡された関数ハンドルを計算します。
function [xf,fval,exitflag,output] = ... fminbnd(funfcn,ax,bx,options,varargin).
.
.
fx = feval(funfcn,x,varargin{:});
つぎの例題で、@deblank
は、関数ハンドルを変数 fhandle
に出力します。functions(fhandle)
を使って、ハンドルを調べることにより、2つの関数が、関数 deblank
を実行していることがわかります。デフォルト strfun\ deblank.m
は、多くの引数タイプを取り扱います。しかし、関数は、(@cell
サブディレクトリの中の)2番目のM-ファイルを使って、ハンドルセル配列引数に多重定義されます。
fhandle = @deblank; ff = functions(fhandle); ff.default ans = matlabroot\toolbox\matlab\strfun\deblank.m ff.methods ans = cell: 'matlabroot\toolbox\matlab\strfun\@cell\deblank.m'
関数ハンドルが、セル配列上で計算される場合、feval
は、引数タイプを使って、計算する適切な関数をstrfun\@cell
の中から一つ決定します。
feval(fhandle, {'string ','with ','blanks '}) ans = 'string' 'with' 'blanks'
参考
assignin
, function_handle
, functions
, builtin
, eval
, evalin
![]() | ferror | fft | ![]() |