2017-04-20 15 views
2

は、私が定義すると言う:Matlabの関数ハンドル内の変数にアクセスすることは可能ですか?例えば

c=3; 
f = @(x) x + c; 

それは

f.c 

を行うか、基本的には関数ハンドル内の変数へのアクセスを取得することは可能でしょうか?

私はMatlabでオブジェクトと構造体を作ることができますが、問題は私がたくさんの関数を持つ.matファイルを持っていて、それらが使用している変数を見たいということです。この特定のシナリオでは、私はmatlabの変数にアクセスするだけで、私のものを再コードする必要はないようにしようとしていますが、再コードするオプションがない場合には、関数ハンドルを定義する変数/フィールド。私は、f(3)と呼ぶと、それは6を返すので、明らかにどこかでcを知っているので、どうすればそれにアクセスできますか?c

答えて

8

機能を使用すると、functionsが可能です。 F = functions(f)を呼び出すと、ハンドルfを持つ関数に関する情報を持つ構造体Fが返されます。 fanonymous functionへのハンドルである場合は、あなたの場合のように、Fの分野の一つは、匿名関数で必要とされる変数に関する情報が含まれている、workspaceです:

>> c = 3; 
>> f = @(x) x + c; 
>> F = functions(f) 
F = 
      function: '@(x)x+c' 
       type: 'anonymous' 
       file: '' 
      workspace: {[1x1 struct]} 
    within_file_path: '__base_function' 
>> F.workspace{1}.c 
ans = 
    3 
関連する問題