2017-04-20 108 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的函数的信息。当f是的句柄anonymous 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 
相关问题