web-dev-qa-db-ja.com

Matlab関数「feval」が必要なのはなぜですか?

関数ハンドルは、関数を呼び出すために使用できます。

f = @sin;
val = f(1.0);

では、なぜ「feval」が必要になるのでしょうか。

val = feval(f, 1.0);

いつ役立つのですか?

20
Da Kuang

fevalの場合、最初の引数は引用符付きの文字列にすることができ、関数ハンドルよりも柔軟性があります。 _fn1_、_fn2_、_fn3_のように、ベース名の後にインデックスが続く関数を作成し、feval(['fn', num2str(k)], x, y, z);を使用してこれらを動的に呼び出すことができます。

15
s.bandara

リリース14(MATLAB 7)までは、fevalは関数ハンドルを評価するためのwayでした...または関数が名前で指定されている場合に関数を評価します。

ソース: feval() のメンタルモデル。

13
Oleg

必ずしも使用する機能がわかっているとは限りません。多くの例があります

これはばかげた例です:各数値の後のテキストファイルで、平均、最小、最大、平方などの数学関数として評価できる異なるWordが表され、タスクがそれぞれの後に結果を計算しているとします。

2,square,2,power,4,log,10 ...

そして、あなたはこのテキストを通り抜けて最終結果を計算するプログラムを書きたいと思っています...

別の例は、たとえば、ユーザー入力関数ハンドルfでプロット関数を定義したいので、柔軟な方法である必要があります...

pfun=@(f,x) plot(f(x))
0
user702846