1

この構文はどこにも見つかりません

y = @(beta, x)x*beta;

xベクトルまたは行列はどこにあると言えますか。別の関数を参照するために使用されるため、同じファイル@に複数の外部から見える関数を含めることができますか? .m申し訳ありませんが、私はmatlabを初めて使用しますが、ドキュメントでこれを見つけることができません

4

2 に答える 2

4

これは、Matlab で無名関数を定義する方法です。基本的には同じです

function result = y(beta, x)

result = x * beta;

ただし、それを定義するための m ファイルまたはサブ関数は必要ありません。これらは、他の m-ファイル内または式内で構築することもできます。典型的な使用法は、入力の 1 つとして関数を必要とするいくつかの複雑な関数の呼び出し内のスローアウェイ関数としてです。

>> arrayfun(@(x) x^2, 1:10)

ans =

     1     4     9    16    25    36    49    64    81   100

私は個人的にそれらを頻繁に使用して、繰り返しのステートメントのリストをリファクタリングします

a = complex_expression(x, y, z, 1)
b = complex_expression(x, y, z, 3)
c = complex_expression(x, y, z, 8)

の中へ

f = @(n) complex_expression(x, y, z, n)
a = f(1)
b = f(3)
c = f(8)

Mathworks からの詳細情報。これらは、Python のラムダ式とほぼ同じです。

于 2013-08-07T21:02:48.960 に答える