2

Matlab スクリプトで使用する関数オブジェクト プログラミング手法にアクセスできるかどうかを調べようとしています。これは、 .NET の Func 型Python の関数オブジェクトに似ています。Matlabは関数にファーストクラスのオブジェクトステータスを与えますか?

4

1 に答える 1

4

Matlab には、他の関数に渡すことができる関数ハンドルがあります。一例として、関数fzeroは、最初の引数として指定した関数のゼロクロッシングを検出します。関数ハンドルは、変数、セル配列、または構造体に格納できます。Matlab には、Python のラムダ式に似た無名関数もあります。したがって、Matlab の関数には、ファースト クラスと見なされるすべてのプロパティがあるようです。

いくつかのランダムな例:

>> sq = @(x) x^2 - 2
sq = 
    @(x)x^2-2

>> fzero(sq, 1)
ans =
    1.4142

>> class(sq)
ans =
function_handle

>> functions = {@(x) 2 * x, @(y) 3 * y, @exp}
functions = 
    @(x)2*x    @(y)3*y    @exp

>> functions{2}(10)
ans =
    30

>> functions{3}(1)
ans =
    2.7183
于 2015-06-18T19:52:44.123 に答える