| 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 | ![]() |